什么是服务治理?


服务治理就像是白羊座宫殿,它是通向微服务架构圣殿的第一关,是所有微服务应用要考虑的第一个问题。本章将带大家深入浅出,从“提出问题-解决问题”的思路出发,让大家对服务治理领域的核心功能有个直观的感受。这就像相亲见姑娘的第一面,不求深入了解,但求心中有数,为后面的章节开一个好头。Let’s Go!

服务治理的伟大目标

服务治理这个名字乍一听很唬人,其实他很低调,能做的事情无非就是专治分布式系统各种不服。呦,你看这口气还挺大,既然牛已经吹出来了,那就先给自己定几个小目标吧!
在这里插入图片描述

  1. 高可用性
    换成通俗易懂的说法就是**”当一只打不死的小强“**,在服务治理麾下的所有微服务节点,不论是被闪电击中还是被挖掘机铲断了电源,即使战至最后一个存活节点,服务治理框架也要保证服务的可用性。
  2. 分布式调用
    微服务的节点通常散落在不同的网络环境中,大型互联网公司甚至会使用两地三机房或跨洲际机房做异地容灾。这就要求服务治理框架具备在复杂网络环境下准确获知服务节点网络地址(IP,端口以及服务名称)的能力。作为服务消费者,就可以借助服务治理框架的精准制导能力,向服务节点发起请求。一只穿云箭,千军万马来相见。
  3. 生命周期管理
    万物都在轮回之中,在Spring的世界更是如此。微服务也把自己平凡而充实的一生,交给了服务治理框架,从服务上线、持续运行直到临终关怀,服务治理始终贯穿整个微服务生命周期。
  4. 健康检查
    微服务的节点都是任劳任怨的执行996,当然,如果一个节点因为任何原因不再能996的辛勤工作,那就不再是哥的兄弟了。服务治理框架要精准识别这些节点,将其从自己的兄弟会中剔除。

实现目标要先解决问题

目标和想法是美好的,但是现实里却没那么容易。为了实现这些小目标,我们必须解决眼前的几个大问题。

四个问题(3W1H)

假设我们把每个微服务集群比喻成一个武林门派,比如搜索服务就是“所罗门”,优惠券服务就是“卷莲门”,那么这个服务集群中的每个机器就相当于门下的一个弟子,而每个业务调用方就是一个前来踢馆的江湖高手。

中原武林浩如烟海,如何在茫茫人海中找到我想要挑战的那个人呢?服务治理框架,就是要帮这些踢馆的高手找到对应门派的精壮弟子进行切磋。在这个过程中服务治理要帮助踢馆高手翻过四座大山,实现最终目标,这就是四个需要服务治理框架来解决的问题,我们称之为3W1H。

  1. Who are you
    作为服务治理框架,我如何知道中原武林各门各派的众弟子(服务提供者)的信息,这里面的信息是他们行走江湖的独一无二的标识,包含三个维度:a) 名号-敢问你的IP和端口是什么 b) 门派 - 报上你的服务名称 c) 身体状况 - 服务当前是可用or下线状态决定了你是能打还是不能打。
  2. Where are you from
    作为踢馆人(服务调用方),我如何知道这些武林人士(服务提供者)来自哪里?我又如何从服务治理框架手里拿到他们的地址,从而使我可以找到正确的人?
  3. How are you doing
    服务治理框架需要时刻甄别这些门派弟子的身体情况,一旦某个弟子断了气,就要做出相应标识,并告知踢馆人,以防别人走了冤枉路,找到了地方却找不见人。
  4. When you die
    有的门派弟子比较怂包,不敢应战,且主动请求下线。或者为了闭关修炼高级武功(系统升级重启),短时间内不在线,那么服务治理框架也要做出相应的回应,对主动下线的服务做清退处理。

服务治理的解决方案

为了解决前面提到的四个问题,服务治理领域祭出了六门独门武艺,用来解决这四个问题。在这一章节各位就当听个响,知道这些个武功路数的名称就好,后面的章节我们再来深入学习

  • Who are you - 服务注册 - 服务提供方自报家门
  • Where are you from - 服务发现 - 服务消费者拉取注册数据
  • How are you doing - 心跳检测,服务续约和服务剔除 一套由服务提供方和注册中心配合完成的去伪存真的过程
  • When you die - 服务下线 - 服务提供方发起主动下线
Spring Cloud Alibaba提供了多种服务治理的方式,包括注册中心、配置中心、服务网关等。下面简单介绍一下如何使用Spring Cloud Alibaba进行服务治理。 1. 注册中心 Spring Cloud Alibaba使用Nacos作为默认的注册中心,可以通过以下方式启用: ```xml <!-- pom.xml --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.1.RELEASE</version> </dependency> ``` 然后在配置文件中配置Nacos的连接信息: ```yaml # application.yml spring: cloud: nacos: discovery: server-addr: localhost:8848 # Nacos地址 ``` 在启动类中使用@EnableDiscoveryClient注解开启服务注册和发现功能: ```java // Application.java @SpringBootApplication @EnableDiscoveryClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 2. 配置中心 Spring Cloud Alibaba使用Nacos作为默认的配置中心,可以通过以下方式启用: ```xml <!-- pom.xml --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.1.RELEASE</version> </dependency> ``` 然后在配置文件中配置Nacos的连接信息: ```yaml # application.yml spring: cloud: nacos: config: server-addr: localhost:8848 # Nacos地址 group: DEFAULT_GROUP # 配置分组 namespace: # 命名空间 ``` 在启动类中使用@RefreshScope注解标注需要动态刷新的配置类: ```java // Config.java @Component @RefreshScope public class Config { @Value("${name}") private String name; // ... } ``` 3. 服务网关 Spring Cloud Alibaba提供了多种服务网关的选择,包括Nacos Gateway、Sofa-Bolt Gateway等。这里以Nacos Gateway为例,介绍如何使用: ```xml <!-- pom.xml --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-gateway</artifactId> <version>2.2.1.RELEASE</version> </dependency> ``` 然后在配置文件中配置Nacos的连接信息和网关路由规则: ```yaml # application.yml spring: cloud: nacos: discovery: server-addr: localhost:8848 # Nacos地址 gateway: routes: - id: myroute uri: http://localhost:8080 # 被代理的服务地址 predicates: - Path=/myroute/** ``` 在启动类中使用@EnableDiscoveryClient和@EnableNacosGateway注解开启服务发现和网关功能: ```java // Application.java @SpringBootApplication @EnableDiscoveryClient @EnableNacosGateway public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 以上就是使用Spring Cloud Alibaba进行服务治理的基本步骤。需要注意的是,具体的使用方式还可以根据实际需求进行调整和扩展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值