只有变化是唯一不变的准则
什么是云
- Paas 平台即服务
- Iaas 基础设施即服务
- Saas 软件即服务
什么是云原生
云原生是一种设计模式,它要求云原生应用具备可用性和伸缩性,以及自动化部署和管理的能力,可随处运行,并且能够通过持续集成、持续交付工具提升研发、测试与发布的效率。
云原生简单理解:微服务分布式系统开发+Devops+持续交付(CI/CD)+容器化
(容器化技术)虚拟化技术成为分水岭即docker 【容器化技术不仅仅是docker 只是docker市场最热门】
云原生与十二要素
遵循十二要素设计的应用具备云原生应用的 所有特征
- 基准代码 (Codebase)
一份代码多次部署
- 依赖 (Dependencies)
声明依赖(maven、Gradle)打包工具
- 配置 (Config)
将配置存储至环境变量。
- 后端服务 (Backing Services)
区别仅仅资源的 URL 不同
- 构建、发布、运行 (Build、Release、Run)
严格分离构建阶段与运行阶段。
- 进程 (Processes)
将应用作为无状态的进程运行。 - 端口绑定 (Port Binding)
- 并发 (Concurrency)
- 已处理 (Disposability)
可以快速启动和优雅关闭应用。
- 开发环境与线上环境等价 (Dev/Prod parity)
- 日志 (Logs)
- 管理进程 (Admin Processes)
后台管理任务当作一次性进程运行
至2020-06-29微服务解决方案:
- SpringCloud +Eureka (成熟解决方案)
- Dubbo+Zookeeper(成熟解决方案)
- SpringCloudAlibaba+Nacos(2019年新生)
微服务解决4大问题:
1.这么多服务客户端怎样访问
(gateway)网关
2.这么多服务怎样管理
注册中心(Eureka、Zookeepr、Nacos、EDAS)
3.服务之间怎样通信
-
同步通信:
- HTTP:(Apache Http Client)
- RPC:(Dubbo)
异步通信下:
kafaka、rabbitMq、rocketMq
4.服务挂了怎样办
熔断(Sential)、链路追踪(ShyWalking)、限流(GateWay、Hystric、zuul)
<微服务:从设计到部署> 详情参考
自动化运维Devops
容器化技术
- docker
容器编排
- Docker Swarm 为docker 而生,功能单一,架构问题扛不住大并发
- Kubernetes
- Mesos(未使用过)
服务网格化Service Mesh
非侵入式(无代码入侵)服务网格系统SiderCar模式,服务之间通信基础设置,代理微服务之间的所有网络通信
- Istio
对服务网格的需求包括:服务发现、负载均衡、故障恢复、指标和监控,以及 A/B 测试、金丝雀发布、限速、访问控制、端对端身份验证等。
服务治理
- 服务注册与发现: Eurake,Nacos
- 服务外部化配置: Spring Cloud Config,Nacos,Apollo
- 服务熔断降级: Hystrix,Sentinel
- API 网关: Zuul,Spring Cloud Gateway
- 负载均衡: Ribbon,Dubbo
- 链路追踪: Zipkin,Skywalking
- 日志收集: ELK,EFK
- 服务监控: Promethues,Grafna,Spring Boot Admin
这些组件都有一个问题就是代码侵入性
Istio 是运行于分布式应用程序之上的透明(无代码入侵)服务网格,它同时也是一个平台,提供集成到其它日志、监控、策略系统的接口。
CI/CD
GitLab +Jenkins
大数据
- Hadoop
- Druid (大数据实时处理的分布式系统)
- Spark
分布式数据库
- TiDB 支持无限的水平扩展 强一致性和高可用性 兼容mysql
平台
整合 Mesos 和 Kubernetes 的 Rancher
架构新纪元(一):从分布式架构到云原生架构
架构新纪元(二):什么是云原生?
架构新纪元(三):云原生的生态圈
架构新纪元(四):观察分布式服务
架构新纪元(五):云原生生态的基石 Kubernetes
架构新纪元(六):跨语言服务治理方案 Service Mesh