构建服务治理Eureka
什么是服务治理
服务治理通过抽象将消费者和服务者进行分离,消费者不需要知道真实的物理地址就可以调用,也无需知道多少个服务者可以用。
服务者只需要在服务治理服务器进行注册就可以,无需要知道谁将要使用它。
基于服务治理具有以下优点:
1 更高的可用性,我可以将同一个服务部署到N个服务器上,然后在注册中心注册成多个服务,即使一台服务器的服务挂掉了,其他服务器的服务仍然可用。 举个例子:皇帝同时派出5个人去买荔枝,如果其中1个半路骑马摔断了腿,但是其他几个人还会继续将荔枝买回来
2 负载均衡:服务治理可以提供动态的负载均衡,将所有的请求动态分配到它所管理的所有服务实例中进行处理。
举个例子:皇帝有3个太监可以为其服务,第一件事要穿衣,太监1来做,第二件事要洗漱太监2来做,第三件事上朝太监3来跟随。
3 扩展方便:比如皇帝想要一个修建颐和园的服务,那么只需要单独开发、单独部署即可,其他服务只需要稍微修改一下调用的地方就行,不会对原有项目大动干戈
4 非常灵活:某服务在中途不可用了,过了一段时间又可用了,微服务提供了熔断器、服务降级等功能,可以很好的避免服务不可用所带来的一系列问题
我举个例子: 你是一个客户,过年春节回家,你没有买到票,你直接从N个黄牛那里去寻求帮助,你向N个黄牛都发出了信号,要求帮助买到票(此时不考虑买了多张票的情况)。你作为一个服务的消费者,你很麻烦,
1 你要知道五个黄牛,得通过一些消息找到他们很麻烦
2 黄牛中肯定有掉链子不给你办的人,你需要及时知道信息
3 黄牛中有一个人一会说我没有时间给你买,一会又说我可以帮你买了,很麻烦,沟通成本很高
引入了服务治理服务器,我们来看看他们是如何解决这些问题的。
演化版本:
由上面的图可以看到:
你作为一个消费者,不需要知道黄牛具体的联系方式,不直接和黄牛沟通,而统一由我们的服务治理服务器来解决服务中断、不可用、服务注销等问题。
你只需要去调用买票的服务就可以了,然后坐等结果。
总结:
服务治理服务器Eureka服务器:服务注册中心,负责服务列表的注册、维护、查询等功能
服务提供者:
他是Eureka的一个客户端,负责向Eureka服务器执行注册、续约和注销等操作,以使消费者发现并使用。注册时:
需要向Eureka提供服务名称、服务器IP地址、端口号、域名等主要数据
服务消费者:也是Eureka的一个客户端,它启动时默认会从Eureka获取所有的服务注册信息,待到使用时调用。
服务消费者和提供者并不是一个严谨的说法,因为一个Eureka客户端既可以是消费者也可以说是服务提供者,在架构设计中尽量避免这种循环。