微服务架构整体分析:优势与挑战(1)

文章探讨了微服务架构中依赖管理、单元测试、配置版本控制、自动化部署流程的重要性,以及DevOps角色的变化。重点介绍了服务注册与发现机制,API网关,配置中心的作用,以及面对的运维成本挑战。
摘要由CSDN通过智能技术生成

1.2.2 服务的依赖管理和测试

================

在单体应用中,通常使用集成测试来验证依赖是否正常。而在微服务架构中,服务数量众多,每个服务都是独立的业务单元,服务主要通过接口进行交互,如何保证它的正常,是测试面临的主要挑战。

所以单元测试和单个服务链路的可用性非常重要。

1.2.3 有效的配置版本管理

===============

在单体系统中,配置可以写在yaml文件,分布式系统中需要统一进行配置管理,同一个服务在不同的场景下对配置的值要求还可能不一样,所以需要引入配置的版本管理、环境管理。

1.2.4 自动化的部署流程

==============

在微服务架构中,每个服务都独立部署,交付周期短且频率高,人工部署已经无法适应业务的快速变化。有效地构建自动化部署体系,配合服务网格、容器技术,是微服务面临的另一个挑战。

1.2.5 对于DevOps更高的要求

===================

在微服务架构的实施过程中,开发人员和运维人员的角色发生了变化,开发者也将承担起整个服务的生命周期的责任,包括部署、链路追踪、监控;因此,按需调整组织架构、构建全功能的团队,也是一个不小的挑战。

1.2.6 运维成本

==========

运维主要包括配置、部署、监控与告警和日志收集四大方面。微服务架构中,每个服务都需要独立地配置、部署、监控和收集日志,成本呈指数级增长。

服务化粒度越细,运维成本越高。

怎样去解决这些问题,是微服务架构必须面临的挑战。

2 微服务全景架构

=========


3 微服务核心组件

=========


微服务架构核心组件包括:

组件名

服务注册与发现

API 网关服务

分布式配置中心

服务通信

服务治理

服务监控

分布式服务追踪

3.1 服务注册与发现

===========

3.1.1 原理图

=========

微服务架构整体分析:优势与挑战

服务注册与发现三要素:

  • Provider:服务的提供方

  • Consumer:调用远程服务的服务消费方

  • Registry:服务注册和发现的注册中心

3.1.2 注册中心的原理、流程

================

1、 Provider(服务提供者)绑定指定端口并启动服务

2、提供者连接注册中心,并发本机 IP、端口、应用信息和服务信息发送至注册中心存储

3、Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信息至注册中心

4、注册中心根据消费者所求服务信息匹配对应的提供者列表发送至Consumer 应用缓存。

5、Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调用。

6、Provider 状态变更会实时通知注册中心、在由注册中心实时推送至Consumer设计的原因:

Consumer 与 Provider 解偶,双方都可以横向增减节点数。注册中心对本身可做对等集群,可动态增减节点,并且任意一台宕掉后,将自动切换到另一台

7、去中心化,双方不直接依赖注册中心,即使注册中心全部宕机短时间内也不会影响服务的调用(Consumer应用缓存中保留提供者 Provider 列表)

8、服务提供者无状态,任意一台宕掉后,不影响使用

注册中心包含如下功能:注册中心、服务注册和反注册、心跳监测与汇报、服务订阅、服务变更查询、集群部署、服务健康状态检测、服务状态变更通知等

我们有很多种注册中心的技术,Zookeeper、Etcd、Consul、Eureka 4种比较常用,如下

CAP模型CPCPCPAP

数据一致性算法ZABRaftRaft❌

多数据中心❌❌✅❌

多语言支持客户端Http/gRPCHttp/DNSHttp

WatchTCPLong PollingLong PollingLong Polling

KV存储✅✅✅❌

服务健康检查心跳心跳服务状态,

内存,硬盘等自定义

自身监控❌metricsmetricsmetrics

SpringCloud 支持✅✅✅✅

自身开发语言JavaGoGoJava

ZookeeperEtcdConsulEureka

分布式系统中CAP模型3者不可兼得。由于网络的原因,分布式系统中P是必备的,意味着只能选择 AP 或者 CP。CP 代表数据一致性是第一位的,AP 代表可用性是第一位的。

Zookeeper、Etcd、Consul 是 CP 型注册中心,牺牲可用性来保证数据强一致性

Eureka 是 AP 型注册中心,牺牲一致性来保证可用性

3.2 API 网关服务

============

微服务架构整体分析:优势与挑战

上面是Api网关服务的基本架构:用户的请求经过统一的Api网关来访问微服务里具体的服务颗粒,并且可能产生串联的链路服务调用。

有很多耳熟能详的API网关技术,比如 Zuul、Kong、Tyk等,提供了服务路由在内的很多通用功能,后面会有专门的章节来说这个。

Tyk:Tyk是一个开放源码的API网关,它是快速、可扩展和现代的。Tyk提供了一个API管理平台,其中包括API网关、API分析、开发人员门户和API管理面板。Try 是一个基于Go实现的网关服务。

Kong:Kong是一个可扩展的开放源码API Layer(也称为API网关或API中间件)。Kong 在任何RESTful API的前面运行,通过插件扩展,它提供了超越核心平台的额外功能和服务。

Netflix zuul:Zuul是一种提供动态路由、监视、弹性、安全性等功能的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。

除了路由之外,Api网关服务还包含:认证和授权,重试、熔断、降级,负载均衡,日志、监控、链路追踪,灰度发布,ABTesting 等功能。

3.3 配置中心

========

微服务架构整体分析:优势与挑战

上面这个是携程的开源配置中心Apollo系统的架构设计,我们从下往上进行分析:

1、Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端

2、Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)

3、Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳,支持注册、更新、删除能力

4、在Eureka之上我们架了一层Meta Server用于封装Eureka的服务发现接口

5、Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试

6、Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试

7、为了简化部署,我们实际上会把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中

上面的架构体现了如下特点:

•高可用:配置服务为多实例部署,访问层保证 load balance、错误重试

•弱依赖:使用了Eureka来做配置中心的服务注册,如果出现问题或者网络出现问题的时候,服务应该可以依赖于它本身所缓存的配置来提供正常的服务

3.4 服务通信

========

分布式系统一般是由多个微服务颗粒组成的,微服务与微服务之前存在互相调用,甚至多个链路访问的情况。所以他们之间是需要通信的,通信方式继承于SOA,包含同步与异步两种模式。

3.4.1 同步访问方式

============

1、RPC 访问模式

Remote Procedure Call Protocol,远程过程调用协议,一般使用在分布式业务或者微服务架构风格中。像调用本地函数一样,去调用一个远端服务。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化

image

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化

[外链图片转存中…(img-RRAyqSpH-1712437519788)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值