服务治理介绍|学习笔记

简介: 快速学习服务治理介绍

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段服务治理介绍】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/684/detail/11862


服务治理介绍

 

内容介绍

一、微服务代码构建

二、当前代码的三大问题

三、服务治理

 

一、微服务代码构建

所谓用户下单,其实就是订单微服务调用商品微服务,查询到一件商品的具体信息,然后将信息返回,订单微服务再将这个信息组装成订单保存到数据库的一个过程。

image.png

以下是他的核心代码:

Iog.info(接收到()号商品的下单请求,接下来调用商品微服务查询此商品信息”,pid)

//调用商品微服务,查询商品信息

Product product =

|

restTemplate.getForObject(url”http://localhost:8081/product/”+ pid,Product.class);

Iog.info (“查询到()号商品的信息,内容是:()”,pid,JSON.toJSONString(product));

//下单(创建订单)

Order order = new Order();

Order.setUid(1);

Order.setUsername(“测试用户”);

Order.setPid(pid);

Order.setPname(product.getPname());

Order.setPprice(product.getPprice());

Order.setNumber(1);

OrderService.createorder(order);

Iog.info(“创建订单成功,订单信息为

()”,JSON.toJSONString(order);

Return order;

但是这个代码是有一点问题的,问题出在 Product product =

|

restTemplate.getForObject(url”http://localhost:8081/product/”+ pid,Product.class);

这一串代码上,在代码中,我们以硬编码的形式将服务提供者商品微服务的地址和端口号写死了,这样会造成很大的问题。

二、当前代码的三大问题

1、问题所在

第一、一但服务提供者的地址信息变化了,我们就不得不去修改服务调用者的 java 代码。

第二、我们现在的调用关系很简单,只有一台服务提供者,也只有一台服务调用者。

但是如果有高并发的情况存在,我们是需要做集群的,一但做集群,我们是会出现以下情况的:

 image.png

出现多台商品微服务,此时作为订单微服务来说,将无法辨别要调用哪一台或者是三台都调用,那么此时什么时候调用哪一台也无法确定,所以我们最好的解决方案其实就是负载均衡。

所以,一但服务提供者做了集群,服务调用者一方无法实现负载均衡的去调用。

第三、现在图中只有订单微服务和商品微服务,在企业中微服务数量可能会变的成千上万,此时我们需要记住这些地址的端口显然不太现实。所以,一但微服务变得越来越多,如何来管理这个服务清单就成了问题。

2、解决办法

将上面的图片进行修改,将主体部分移到下方,在上方加入服务治理者组件。

作用机理:我们将所有的服务提供者向服务治理者进行一个注册,然后服务消费者从服务治理者获取服务提供者所上传的信息。

例如:商品微服务有3个,在注册之后应该有三个地址和端口,订单微服务拉取到其中的一个进行调用就可以了,如果以后再去增加商品微服务或者是变动微服务的地址,我们只需要重新从服务治理者这里把新的服务地址拉取下来即可,这种思想就是服务治理的思想。

 

三、服务治理

1、服务治理

我们可以通过注册中心动态的实现服务治理,服务治理,即:微服务架构中最核心最基本的模块,用于实现各个微服务的自动化注册与发现。

2、服务注册

在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息并在注册中心形成一张服务清单,服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。

也就是说服务提供者一但注册之后,服务中心就会监控提供者,一但发现提供者不能再提供服务,那么就将其从服务清单中剔除,这样就保证了消费者不会拿到不可用的服务。

3、服务发现

服务调用方向,服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实例的访问。

所以,作为一个服务消费者,需要通过注册中心拉取到服务提供者的清单,这个过程是跟服务中心在沟通,接下来他从清单中选出一个服务地址,去执行具体的调用,这个过程是跟服务提供者在沟通。需要注意的是真正的服务调用是不经过服务注册中心的。

image.png

通过上面的调用图会发现,出了微服务,还有一个组件是服务注册中心,他是微服务架构中非常重要的一个组件,在微服务构架里起到了协调者的一个作用。

注册中心一般包含如下几个功能:

(1)、服务发现:

✸ 服务注册:保存服务提供者和服务调用者的信息

✸ 服务订阅:服务调用者订阅服务提供者的信息,注册中心向订阅者推送提供者的信息

(2)、服务配置:

✸ 配置订阅:服务提供者和服务调用者订阅微服务相关的配置

✸ 配置下发:主动将配置推送给服务提供者和服务调用者

(3)、服务健康检测:

✸ 检测服务提供者的健康情况,如果发现异常执行服务剔除

常见的注册中心

1、Zookeeper

2、Eureka

3、Consul

4、Nacos

前三个仅作了解, 而 Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

它是 Spring Cloud Alibaba 组件之一,负责服务注册发现和服务配置,可以这样认为: nacos = eureka+ config 。

Nacos 简介

Nacos 致力于帮助您发现、配置和管理微服务。 Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

相关文章
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1054 151
|
4天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1738 9
|
9天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
684 152
|
11天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
652 12
|
6天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
410 4