**关键词:**微服务,分布式,服务注册中心,容器,非功能性代码剥离,自动化,sring cloud,dubbo
诞生背景
传统开发模式特点:
1. 独占硬件资源运行,造成资源浪费。(微服务化)
2. 基础建设重复开发,高维护成本。(基于云原生的通用能力)
3. 开发、测试和运维之间信息阻塞,造成开发效率低下。(devOps)
定义:
基于云原生技术的一组架构原则和设计模式的集合,旨在将大量非功能性代码最大化剥离,由云设施接管非功能特性。
原则
1. 服务化:基于高内聚低耦合原则,按照业务域对服务进行拆分,各个服务独立开发、部署,提高系统的稳定性和复用性。
2. 弹性:基于容器技术进行部署,实现IT资源的自动扩缩容。
3. 可观测:分布式系统带来了一系列运维复杂性。主动通过日志、链路跟踪和度量手段,使得一次请求在各个服务间的调用链路清晰可见。
4. 自动化:基于自动化工具实现交付和运维的自动化。
5. 零信任:认证、授权。
6. 韧性:高可用。手段包括:限流、降级、熔断、异地多活、主从模式、阔区域容灾。
7. 持续演进
关联技术
容器
docker基于操作系统虚拟化技术,共享操作内核,提升系统的部署密度和弹性。k8s在容器编排方面,成为分布式资源调度和自动化运维的行业标准。
微服务
对系统按照业务域进行拆分,各服务服务独立研发部署,支持水平扩展和冗余部署。提升了扩展性和稳定性、复用性。
微服务横向关系
可发现性:
通过引入第三方服务注册中心,达到如下的目的:当服务发生变化,比如扩容,发布,下线的时候,依赖他的其它服务在不重新启动的前提下,可以感知到服务状态的变化。
可交互性:
通过远程调用协议、元数据中心存储服务的元数据信息等手段,使得服务之间了解如何调用彼此。