HttpClient+微服务+Zookeeper+Eureka
HttpClient
-
支持Http协议的编程工具包
面试题:HttpClient是跨域请求吗?
答:不是,就是远程过程调用
微服务:
SOA思想(面向服务的架构)
-
将程序的不同功能单元(服务)进行拆分,将服务之间定义的共同接口和协议联系起来,接口采用中立的方式进行定义。 核心理念:服务松耦合
RPC:
-
远程过程调用(Remote Procedure Call) 不同的服务器之间的调用就是RPC
微服务的调用思想
-
将程序按照分布式思想进行拆分,并且可以自动实现故障迁移,无需认为干预 注册中心,心跳检测,全网广播,服务动态感知
微服务调用步骤:
-
服务启动时,会链接注册中心,将服务数据(服务名称|IP|端口)写入注册中心 注册中心接收服务数据后,动态维护服务列表 消费者启动时,链接注册中心,之后将服务列表缓存到本地(消费者内存中),方便下次调用 当用户调用服务消费者时,服务消费者根据当前服务列表的信息,进行负载均衡,挑选一个服务进行访问 注册中心为了保证服务列表的正确性,通过心跳检测机制,实时监控所有服务生产者,如果服务器宕机,注册中心将第一时间更新服务列表,并且全网广播,通知所有的消费者,更新服务列表 优点:用户每次访问,几乎可以保证访问的服务器都是正确的
两大注册中心:Zookeeper和eureka
传统方式的调用
-
缺点:每次增加/减少服务时,都需要编辑conf配置文件,不能自动实现故障迁移,不够智能 服务器之间进行RPC调用都必须经过Nginx服务器,Nginx压力很高。
HttpClient在Java代码中是万能的请求方式(SpringCloud底层实现)
前后端调用的方式都称之为远程过程调用
zookeeper集群
-
最小单位3台 从容灾性和经济性来看,搭建奇数台最好 选举采用myid最大值优先原则