微服务间如何通讯?
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
网友评论