微服务架构原理与治理实践|青训营笔记

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本次课程将介绍:1. 微服务架构、2. 微服务架构原理及特征、3. 核心服务治理功能、4. 字节跳动服务治理实践。

课程资料

课程视频:https://live.juejin.cn/4354/yc_govern

课程导学:https://juejin.cn/post/7099665398655615006/#heading-32

课程PPT:https://bytedance.feishu.cn/file/boxcnPjF5oJxpZh4ZQYDwVCSxib

课后作业:https://juejin.cn/post/7100198862404452383/

微服务架构介绍

架构概览

image-20220529152806419

  • 优势:

    1. 开发效率高、2. 业务独立设计、3. 自下而上、4. 故障隔离
  • 劣势:

    1. 治理、运维难度高、2. 观测挑战、3. 安全性、4. 分布式系统的问题

核心要素

  • 服务治理:

    1. 服务注册、2. 服务发现、3. 负载均衡、4. 扩缩容、5. 流量治理、6. 稳定性治理
  • 可观测性:

    1. 日志采集、2. 日志分析、3. 监控打点、4. 监控大盘、5. 异常报警、6. 链路追踪
  • 安全:

    1. 身份验证、2. 认证授权、3. 访问令牌、4. 审计、5. 传输加密、6. 黑客攻击

微服务架构原理及特征

服务间通信

对于单体服务,不同模块通信只是简单的函数调用,对于微服务,服务间通信意味着网络传输。

image-20220529154849782

服务注册及发现

在代码层面,如何指定调用一个目标服务的地址(ip:port)?

解决思路:新增一个统一的注册中心,用于存储服务名到服务实例的映射。

image-20220529155256156

服务的上下线流程(上面是下线流程、下面是上线流程)

image-20220529155835743

流量特征

统一网关入口、内网通信多数采用RPC、网状调用链路。

image-20220529160029585

核心服务治理功能

服务发布

蓝绿发布:简单、但需要两倍资源(可以根据流量的错峰特性使用蓝绿发布)

金丝雀发布:过度平滑,但是在部署时进度在1%~99%时都有可能出现问题,需要回滚版本,这种维护能力需要平台级的设施提供支持。

image-20220529160407261

流量治理

在微服务架构下,我们可以基于地区、集群、实例、请求等维度,对端到端流量的路由进行精确控制。

image-20220529160735008

负载均衡

负载均衡负责分配请求在每个下游实例上的分布。

常见的LB策略:轮询、随机、一致性hash等。

稳定性治理

线上服务总是会出现故障:网络攻击、流量突增、机房断电、光纤问题、机器问题、网络问题......

下面给出了微服务治理中的四个经典功能:

image-20220529161043591

字节跳动服务治理实践

针对于微服务架构中的请求重试机制字节给出了如下实践:

重试的意义

本地函数重试基本上是没有意义的,而远程函数重试则有意义,因为其发生请求错误的原因可能不是下游程序编写出错,而是因为:网络抖动、下游负载高导致超时、下游机器宕机、本地机器负载高、调度超时、下游熔断、限流等。

因此远程调用的重试可以:

  • 降低错误率:单次错误概率为0.01,连续错误两次概率为0.0001
  • 降低长尾延迟:对于偶尔耗时较长的请求,重试请求有机会提前返回
  • 规避暂时性错误:网络抖动
  • 避开下游故障实例:一个服务可能会有少量故障实例(如机器故障),重试可以将请求打到其他机器

image-20220529161434858

重试的难点

重试本身并不默认开启,因为有一些难点需要克服:

  • 幂等性:一些请求发起一次和多次结果会造成数据不一致情况(转账)
  • 超时设置:不同项目需要结合自己的业务设置超时重试时间和频率
  • 重试风暴:下游的重试次数会因为调用层数的深入而不断放大

image-20220529162348668

重试策略

  • 限制重试比例:设定一个重试比例阈值(例如1%),重试此处占所有请求比例不超过该阈值。

image-20220529162647109

  • 防止链路重试:链路层面防止重试风暴的核心是限制每层都发生重试,理想情况下只有最下层发生重试。可以返回特殊的status表明“请求失败、但别重试”。

image-20220529162717859

  • Hedgedrequests:对于可能超时或者高延时的请求,重新向下游另一个实例发送相同请求,并且等待先到达的响应。

image-20220529162952632

  • 重试效果验证:

image-20220529163104076

\

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
3天前
|
SQL Java 数据库连接
Mybatis架构原理和机制,图文详解版,超详细!
MyBatis 是 Java 生态中非常著名的一款 ORM 框架,在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。本文详细解析了MyBatis的架构原理与机制,帮助读者全面提升对MyBatis的理解和应用能力。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Mybatis架构原理和机制,图文详解版,超详细!
|
4天前
|
存储 JSON 监控
微服务链路追踪原理,一文搞懂!
本文重点讲解微服务链路追踪(Microservices Distributed Tracing),介绍其原理、架构及工作流程。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务链路追踪原理,一文搞懂!
|
4天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
14 1
服务架构的演进:从单体到微服务的探索之旅
|
4天前
|
缓存 监控 网络协议
微服务系列:服务注册与发现原理详解
本文详细解析了微服务架构中的服务注册与发现原理,大厂面试高频,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务系列:服务注册与发现原理详解
|
3天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
20 5
|
4天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理策略
随着云原生技术的不断成熟,微服务架构已成为现代应用开发的主流选择。本文探讨了在云原生环境下实施微服务治理的策略和方法,重点分析了服务发现、负载均衡、故障恢复和配置管理等关键技术点,以及如何利用Kubernetes等容器编排工具来优化微服务的部署和管理。文章旨在为开发者提供一套实用的微服务治理框架,帮助其在复杂的云环境中构建高效、可靠的分布式系统。
17 5
|
4天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
4天前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
16 3
|
4天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
17 3