微服务容器化实践之微服务带来的问题以及常见的解决方案

2019-03-03  本文已影响3人  御风_2fd9

微服务间如何通讯?

1.1从通讯模式角度考虑
一对一还是一对多?
同步还是异步的?

一对一 一对多
同步 请求响应模式,最常见 ——————
异步 通知/请求异步响应 发布订阅/发布异步响应

1.2从通讯协议角度考虑
1.2.1Http协议
使用http实现rest风格的Api
1.2.2RPC
如何选择RPC框架?
I/O、线程调度模型、序列化方式、多语言支持、服务治理
流行的RPC框架
Dubbo/Dubbox、Thrift、Motan、Grpc


image.png

1.2.3MQ消息机制

微服务如何发现彼此?

传统服务vs微服务


image.png

对于传统服务而言,Nginx通过方向代理,找到服务器的ip和
端口号,并同过反向代理和轮询找到服务的提供者。“发现”,其实并非发现,因为在Nginx的配置文件中,域名和ip
端口都是写死的,配置文件的更新需要运维人员手动修改

微服务如何发现?
客户端发现
客户端通过查询注册中心注册信息,来得到微服务的注册
列表,然后通过负载均衡的策略进行服务调用


image.png

服务端发现
在服务端发现中,客户端不再需要访问注册中心,
不需要通过访问注册中心得到一个微服务列表了。
而是通过访问一个具有固定的域名或ip的、具有服务发现和负载均衡的服务。再由它将请求转发给后台服务,并且将应答回传。
这个服务在中间起到了一个类似代理人的作用。将注册中心的内容
维护到自己内部,当客户端在请求的时候,它会知道客户端
需要的是哪个服务,并通过负载均衡策略选择一个后端。


image.png

微服务怎样部署、更新、扩容?

服务编排
包括服务发现、部署、更新、扩容等
流行的服务编排工具
Mesos、Docker Swarm、Kubernetes

上一篇下一篇

猜你喜欢

热点阅读