服务直连模式
特点
1.简洁明了
2.平台语言无关性
存在的问题:
假设给定的url不可用,怎么办?
但是由于这种模式无法保证服务的可用性,所以在生产环境中比较少用
客户端发现模式
客户端发现模式是一种由客户端来决定响应服务实例的网络位置的解决方案
原理:
1.当服务实例启动后,将自己的位置信息提交到服务注册表中,服务注册表维护者所有可用的服务实例的列表
2.客户端从服务注册表进行查询,来获取可用的服务实例
3.在选取可用的服务实例的过程中,客户端自行使用负载均衡算法从多个服务实例中选择一个然后发出请求
服务端发现模式
该模式是客户端通过负载均衡器向某个服务提出请求,负载均衡器查询服务注册表,并将
请求转发到可用的服务实例,同客户端发现模式类似,服务实例在服务注册表中注册或注销
好处:它通常会简化客户端的开发工作,因为客户端并不需要关心
负载均衡的细节工作,其所要做的工作就是将请求发到负载均衡器即可,市面上也提供了很多
商业或者开源的负载均衡器的实现,开箱即用,
难点:一个比较大的问题是需要考虑如何来配置和管理负载均衡器成为高可用的系统组件
常见微服务的消费者
在java领域比较常用的消费者框架主要有HttpClient、Ribbon、Feign等。
* Spring 中的 RestTemplate 其实是对(HttpClient、Okhttp)的一层封装