微服务三个阶段

news2025/4/25 12:29:42
微服务三个阶段

微服务三个阶段:

  • 微服务1.0:仅使用注册发现,基于Spring Cloud 或 Dubbo开发。

  • 微服务2.0:使用熔断、限流、降级等服务治理策略,并配备完整微服务工具和平台。

  • 微服务3.0:Service Mesh将服务治理作为通用组件,下沉到平台层实现,使得应用层仅关注业务逻辑。

微服务1.0

微服务从2005年概念性的提出,到2014 Martin Flower详细阐述了微服务,定义微服务提到的小而专。

紧接着Spring Boot框架发布了1.0,本着约定大于配置的原则,来简化spring应用的初始化搭建及开发过程。

彼时笔者公司项目还是以SpringMvc搭建的单体应用为主,bean配置写在xml中。业务逻辑都在同一个jar包中,jar包体积非常大。开发简单,部署简单。但多人协作,代码冲突,应用频繁发版带来的问题不在少数。

Spring Boot版本时间线

到2017年笔者入职新公司,开始接触微服务框架Spring Cloud 和 Dubbo,来到了微服务1.0阶段。

在1.0阶段主要是通过框架整合注册中心组件来实现服务注册、查找。

常见注册中心有ZooKeeper、Eureka。

ZooKeeper

ZooKeeper提供高可用且具有严格顺序访问控制能力的分布式协调系统。本质上来说是一个强一致性的产品,在集群发生分区时会优先保证一致性而舍弃可用性,CP架构。

ZooKeeper的每个服务端存储的数据都是一致的,整个服务集群中存在唯一一个通过选举得到的主节点,客户端连接到任意一个ZooKeeper的服务端都能够得到一致的最新数据副本。

ZooKeeper通过消息传递保持分布式节点之间的数据一致性。ZooKeeper基于对Paxos进行裁剪的Zab协议,实现了一种主备模式的系统架构来保持服务端集群中各个副本之间的数据一致性。

在主节点崩溃的情况下,Zab协议通过主节点快速选举、初始化、同步从节点、广播这几个阶段来保证数据的一致性和主节点选举的高效性。

Eureka

Eureka优先保证了可用性,采用了去中心化的设计理念,整个服务集群由对等节点组成,不需要选举主节点。集群中失效的节点不会影响正常节点对外提供服务注册和服务查询能力。

如果向某个Eureka服务器注册服务时发现连接失败,会自动切换自其它节点。

  • Register(服务注册):IP、Port 注册到Eureka。

  • Renew(服务续约):发送心跳包,30秒发送一次,每一次收到心跳续约90秒。

  • Cancel(服务下线):服务下线 Eureka 会把此提供者从列表中移除。

  • Get Registry:获取服务注册列表。

  • Replicate:集群中数据同步和复制。

  • Make Remote Call:完成服务的远程调用。

微服务2.0

在全面拥抱微服务后,我们按照Martin Flower定义的小而专来分解业务,拆分应用。

在微服务2.0阶段,我们的服务拆分的更细了。遇到的问题也更多了。

应用层问题:

  1. 服务雪崩:熔断机制处理,使用Fallback数据保证流程在下游服务不可用情况下,服务仍然可用。可用熔断限流框架 Sentinel实现。

  1. 大量请求堆积、故障恢复慢:通过线程池和消息队列机制实现异步化,允许服务快速失败,当某个服务过慢而阻塞,被影响服务在超时后快速失败,不影响整个链路。

基础设施层问题:

  1. 服务器资源分配困难,管理困难:统一基础设施,拥抱容器标准,解决服务之间隔离问题。

  1. 单台服务器上多个进程互相影响、QoS(服务质量)难以保障:统一编排和弹性伸缩平台,拥抱K8S标准,解决环境不一致问题。

  1. 环境多,环境管理、部署更新困难:打造CI/CD服务,实现从代码到测试到上线的自动部署。

服务细分带来的问题:

  1. 微服务框架不统一,业务定制化严重:统一用Spring Cloud,Dubbo等开源技术栈,将服务治理逻辑抽离,以无侵入方式实现。

  1. 传统监控无法满足:全链路跟踪服务与日志服务依据ID联系,以发现故障点上下文,比如链路监控Skywalking,指标监控Prometheus。

  1. API版本管理混乱,无统一监控、治理方式:服务通过API网关暴露,引入API管理,测试平台。

当然,服务治理不仅包含熔断、限流,还有负载均衡、超时、重试、服务追踪等。

微服务3.0

来到了微服务3.0时代,回头看看Spring Cloud和Dubbo架构存在的一些问题:

  • 侵入性:服务治理实现方式和生命周期与业务逻辑是耦合在一起的,能力的增强需要微服务框架的升级,导致升级维护成本高;

  • 实现绑定:微服务框架代码通常由特定语言实现,难以支持多语言实现,异构系统间的集成逐渐成为挑战。

于是社区提出了Service Mesh(服务网格)架构:业务逻辑与服务治理能力解耦,在服务消费者和提供者两侧以独立进程部署。达到去中心化的目的,保障系统的可伸缩性。

Service Mesh通过Sidecar的方式,将控制面和数据面隔离,通过非侵入模式进行流量拦截,实现真正的治理平台化。

网图

参考资料

  1. 《未来架构:从服务化到云原生》

  1. 《架构师(2019年第3期)》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

https安全传输揭秘

HTTPS是什么 我们知道HTTP是明文传输的,恶意的中间人和窃听者通过截取用户发送的网络数据包可以拿到用户的敏感信息。尤其是涉及网上交易,银行转账等操作更是危害极大。 HTTPS的核心是SSL/TLS安全协议层,该层位于应用层和传输层之间&#x…

初识异常(Java系列10)

目录 前言: 1.异常的概念 2.异常的分类 2.1编译时异常 2.2运行时异常 3.异常的处理 3.1如何抛出异常 3.2异常的捕获 3.2.1异常的声明 3.2.2try-catch捕获并处理 3.3异常的处理流程 4.自定义异常类 结束语: 前言: 相信在大家学…

Windows常用命令整理

之前写了一篇关于Windows快速打开服务_陌客依天涯的博客-CSDN博客_服务快捷键 的文章,有表示windows还有很多常用的,那就整理一下,分享跟多点,希望对大家有用。 1、mstsc /*快速开启远程连接客户端*/ 2、regedit /*快速打开注册…

AcWing 1227.分巧克力(二分)

一、题目信息 二、思路分析 先从数据范围入手,这道题的数据范围最大是10的5次方,这就说明我们解决问题时的用到的算法的时间复杂度要控制在O(n)O(n)O(n)或者O(nlog(n))O(nlog(n))O(nlog(n))。 而O(nlog(n))O(nlog(n))O(nlog(n))的算法中最常用的是二分或…

基于RateLimiter+Aop+自定义注解实现QPS限流

QPS秒级限流一、Aop二、自定义注解三、测试类实例QPS简介:QPS(Query Per Second),QPS 其实是衡量吞吐量(Throughput)的一个常用指标,就是说服务器在一秒的时间内处理了多少个请求 —— 我们通常…

控制流分析之构建支配树

控制流分析之构建支配树引言1 分析有向图2 构建支配树2.1 求最小半支配点2.2 求最近支配点引言 如上一个带有起始入口点的有向图为例,从A到Q的必经结点有A、L、M、Q,我们称其为Q的支配点,其中M为Q的最近支配点。我们将每个结点的最近支配结点…

分享124个PHP源码,总有一款适合您

PHP源码 分享124个PHP源码,总有一款适合您 源码下载 链接:https://pan.baidu.com/s/1AIktEQ0-cPRoSSAw_eA2Lw?pwdfb9m 提取码:fb9m 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...&#xff0…

2022 Apache APISIX 年度记忆

时光已逝,转眼 2022 年已然落下了帷幕。Apache APISIX 社区在众多开源爱好者和开发者的陪伴下,又一起走过了新的四季。 在过去的一年中,我们的开源项目和社区都取得了许多成就,并得到了来自全球范围的广泛关注和支持。2022 年&am…

数据库管理与表文件管理

数据库管理: 1.MySql服务器管理数据库位置:C:\ProgramData\MySQL\MySQL Server 5.5\data 2.查看所有的数据库名 show databases; mysql> show databases;(查看有哪些数据库 这属于MySql的命令,不属于SQL语句&…

硅基仿生业务全面 Serverless 容器化,14万+问答库助力糖尿病科普

作者:宁佑章(硅基仿生科技)、元毅(阿里云容器服务) “使用阿里云容器服务 Knative,解决了开发迭代慢的问题,加速了深度学习模型的性能提升;同时提供了弹性可伸缩的资源配置&#xf…

关于Linux宝塔面板nginx配置关于php项目的跨域请求

1、网上有好多跨域请求的案例。最多的如下: 在项目下的配置文件中添加: #add_header Access-Control-Allow-Origin * always; #add_header Access-Control-Allow-Credentials true; #add_header Access-Control-Allow-Methods GET,POST,OPTIONS…

新库上线 | CnOpenData中诚信绿金ESG评级数据

中诚信绿金ESG评级数据 一、数据简介 在碳达峰、碳中和的时代浪潮下,以环境、社会、公司治理为核心的ESG投资理念迅速成为发现资本市场投资机遇、规避投资风险的利器。中诚信绿金在多年信用评级经验的基础上通过建立契合国内政策趋势、信息披露现状、行业发展情况…

applicationContext讲解

applicationContext讲解 生成bean 豆子&#xff0c;bean工厂&#xff0c;对象的工厂 id是对象名&#xff0c;豆子的名字&#xff0c;全项目唯一&#xff0c;class是类全路径名 bean标签的底层实现是无参构造方法 <bean id"book1" class"com.nz.entity.Book&q…

【BFS 广度优先搜索】详解感染橘子最短时间问题

一、题目描述 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直…

nginx在linux上的部署

第一步、虚拟机安装新建虚拟机&#xff08;创建的时候记得打开网络连接&#xff0c;使用nat转换的方式&#xff09;linux配置上网第一种方式&#xff1a;自动获取&#xff0c;将ipv4设置为dhcp的自动获取。但是这样每次获取的ip可能不一样。使用xshell连接的时候可能需要修改。…

第四十一讲:神州防火墙透明模式的初始配置

现在要求把防火墙接入到现有的局域网中&#xff0c;尽量不改变已有的LAN架构和IP 地址分配&#xff0c;还能对内网的流量管理进行管理&#xff0c;起到对内网的安全保护作用。防火墙接入要求&#xff0c;应该选择防火墙的工作模式为透明模式。透明模式对原有网络的介入最少&…

把PBP、前端对接、钉钉集成玩透的考试系统

文/刘俊良 周亮 年佳斌 编辑/杜逸敏 一、项目背景 客户需要开发一套企业内部的考试系统&#xff0c;用于企业内部规章制度的学习及考核。系统的主要功能包括&#xff1a; 每个员工都可以进行每日答题与专项答题。根据答题结果&#xff0c;归类不同的题库以供员工查询学习。…

进击的 AI 生成,创造性的新世界!

2022年&#xff0c;AI艺术生成文本生成图像的AI绘画生成器如雨后春笋般涌现&#xff0c;以一幅幅“不明觉厉”的AI作品进入大众视野。从2月Disco Diffusion爆火&#xff0c;仅两个月后OpenAI发布DALL-E 2&#xff0c;谷歌和Meta紧随其后宣布了各自的AI”画家“Imagen和Make-A-S…

尚医通-排班规则接口-排班详情接口-前端整合(二十五)

目录&#xff1a; &#xff08;1&#xff09;医院排班-排班规则接口 &#xff08;2&#xff09;医院排班-排班规则-前端整合 &#xff08;3&#xff09;医院排班-排班详情接口 &#xff08;4&#xff09;医院排班-排班详情前端整合 &#xff08;1&#xff09;医院排班-排班…

一文分析Linux虚拟化KVM-Qemu分析之内存虚拟化

说明&#xff1a; KVM版本&#xff1a;5.9.1QEMU版本&#xff1a;5.0.0工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 深入分析Linux虚拟化KVM-Qemu之ARMv8虚拟化文中描述过内存虚拟化大体框架&#xff0c;再来回顾一下&#xff1a; 非虚拟化下的内存的访问…