这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
课程主要内容
本节课程主要讲解了微服务的相关概念,包括微服务的架构、原理、特征以及核心治理功能,并通过实战项目加深理解。
具体内容
1.微服务架构介绍
微服务架构是架构发展过程中逐渐演变来的,其是彻底的服务化。使用微服务架构的。
微服务架构的核心要素是服务治理、可观测性和安全。
服务治理部分主要包括服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理等内容。可观测性部分有日志采集、日志分析、监控打点、链路追踪等,安全部分有身份验证、认证授权、访问令牌访问加密等。
2.微服务架构原理及特征
主要学习了微服务架构的基本组件、工作原理。
基本概念:
最核心的有两个:服务和实例。服务(service)是指一组具有相同逻辑的运行实体,实例(instance)则为服务中每个运行实体即为一个实例。服务包含集群,集群中会包含多个实例。 通常一个实例包含一个或多个进程,反之不常见。实例的承载形式有进程、VM、k8s等。
有状态服务和无状态服务:服务的实例能否存储数据。通常储存类的是有状态的,而代理类的是无状态的。
HDFS可以看成是微服务的组合,即NameNode service(单实例服务)和DataNode service。
服务间通信:对单体服务来说,服务间通信仅仅是简单的函数调用;但是对于微服务来说,服务间通信意味着网络传输。
服务注册时,对于微服务,难以直接通过ip和端口号进行调用。如果使用DNS的话,存在延时、负载均衡、不支持服务实例的探活检查。因此解决思路就是新增一个统一的服务注册中心,用于存储服务名到服务实例的映射,这样就解决了DNS没有端口的问题。
当一个流量来访问时,会经过负载均衡后与API网关连接,然后再跟各个服务连接。流量刚开始进来时是HTTP,经过网关后往往会变为RPC协议。HTTP是文本协议,效率较低,RPC是二进制协议,因此服务内部调用用的是RPC协议。
3.微服务架构的核心治理功能
该部分主要学习了服务发布、流量治理、负载均衡、稳定性治理等核心治理功能。
服务发布
服务发布是指让一个服务升级运行新的代码的过程。其难点在于服务不可用、服务抖动、服务回滚。
蓝绿部署:核心思想是将要升级的服务分为蓝绿两个集群,然后对绿色集群流量断开,并升级绿色的集群,之后全部流量与绿色集群连接,断开蓝色集群,再升级蓝色集群。这种方案的缺点是需要的两倍资源。
灰度发布(金丝雀发布):先加新的实例,没问题的话再下线一个老的实例,以此类推,不断更新。其难点在于精细化的流量控制,需要不停的改注册点,且回滚较为困难。
流量治理
在微服务的架构下,可以基于地区、集群等维度,对端到端的流量进行治理。
负载均衡
负责分配(Load Balance)请求在每个下游实例上的分配。常见的LB策略有Round Robin、Random等。
稳定性治理
线上服务一定会出问题,这与代码的正确性无关。这可能是由于网络攻击、流量突增、机房断电、光纤被挖等等问题。因此提出了限流、熔断、过载保护、降级等策略。
总结
经过这节课的学习,主要了解了微服务的相关概念,以及其架构原理与特征,并且学习了微服务的服务发布、流量治理、负载均衡、稳定性治理等核心治理功能。我发现负载均衡、熔断这些方法,在分布式相关的内容里出现的次数好多。