Eureka、Nginx和ZooKeeper的介绍
1、Nginx是著名的反向代理服务器,也被广泛的作为负载均衡服务器 2、ZooKeeper是分布式协调服务框架,有时也被用来做负载均衡
先说下什么是注册中心规则 每一个微服务启动的时候,都需要去注册中心注册(eureka或zookeeper或其他),同类服务注册的服务名必须相同,不同类服务注册的服务名一定不能相同
1、订单服务部署5台服务器,那么这5台微服务在注册中心中注册的服务名必须一致,例如ORDER 2、商品服务部署4台服务器,那么这4台微服务在注册中心中注册的服务名必须一致,例如GOODS 3、订单服务和商品服务注册的服务名一定不能相同,不能同为ORDER,也不能同为GOODS
一、Nginx
配置负载节点
upstream backend { server 192.168.1.10; server 192.168.1.11; }
当随着单个服务的节点变多
upstream backend { server 192.168.1.10; server 192.168.1.11; ..... }
缺点: 1、配置维护的成本变高,因为节点太多(节点太多了,就会出现一个问题就是,那么Ip,如果某个Ip挂了,就不知道这个服务Ip是好的还是坏的,缺乏心跳检测) 2、单点故障的风险增加了,因为热点服务的访问量很高,如果这个服务集群内的负载均衡服务出现问题,这个服务将失效(负载均衡和热点服务放在一台机器上,这个机器的压力会很大,如果机器挂了,Nginx就会挂了,那么这个服务都不能用了)
第二个问题:可以通过双机高可用部署方案,使用另一台机器单独部署nginx用来负载均衡只是成本较高
二、ZooKeeper
ZooKeeper作为一个服务的注册中心,在其中登记每个服务,每台服务器知道自己是属于哪个服务,在服务器启动时,自己向所属服务进行登记,这样,一个树形的服务结构就呈现出来了 服务的调用者到注册中心里面查找:能提供所需服务的服务器列表,然后自己根据负载均衡算法,从中选取一台服务器进行连接 调用者取到服务器列表后,就可以缓存到自己内部,省得下次再取,当服务器列表发生变化,例如某台服务器宕机下线,或者新加了服务器,ZooKeeper会自动通知调用者重新获取服务器列表 由于ZooKeeper并没有内置负载均衡策略,需要调用者自己实现,这个方案只是利用了ZooKeeper的树形数据结构、watcher机制等特性,把ZooKeeper作为服务的注册和变更通知中心,解决了Nginx负载均衡方案带来的问题
三、eureka
1、eureka作为分布式系统的注册中心,主要作用是用于服务治理 2、eureka分为eureka server和eureka client
四、CAP基本概念
分布式系统的三个指标
1、Consistency 一致性 2、Availability 可用性 3、Partition tolerance 分区容错性
五、eureka和zookeeper区别
eureka基于AP,zookeeper基于CP 由于作为注册中心可用性的需求要高于一致性,所以eureka貌似要比zookeeper更合理一些