本文主要是介绍01.04 Day 20 - 弹力设计篇之“弹力设计总结”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家好,我是 Snow Hide,作为《左耳听风》这个专栏的学员之一,这是我打卡的第 20 天,也是我第 20 次进行打卡这种操作。
今天我温习了该专栏里一篇叫《弹力设计篇之“弹力设计总结”》的文章。
关键词总结:弹力设计概览(负载均衡、服务发现、动态路由、自动化运维、服务调度、服务伸缩、故障迁移)、服务界耦合拆分(bulkheads 模式、自包含系统、异步通讯、自动化运维)、容错设计(错误方面、一致性方面、流控方面、自动化运维方面)弹力设计开发和运维(比较 Spring Cloud 和 Kubernetes、服务涵盖面比较、服务的功能特性)。
所学总结:
弹力设计概览
负载均衡
包含负载均衡 & 服务健康检查,可以通过 Nginx 或 HAProxy 等技术实现。
服务发现
包含服务发现 & 动态路由 & 服务健康检查,可以通过 Consul 或 Zookeeper 等技术实现。
自动化运维
包含自动化运维 & 服务调度 & 服务伸缩以及故障迁移,服务调度可以通过 Docker 结合 Kubernetes 来实现。
服务界耦合拆分
bulkheads 模式
涵盖了业务分片、用户分片、数据库拆分。
自包含系统
涵盖了从单体到微服务的中间状态,拆分一组相关的微服务,保证没有外部的依赖。
异步通讯
涵盖了服务发现、事件驱动、消息队列、物业工作流。
自动化运维
涵盖了服务调用链和性能的监控系统。
容错设计
错误方面
涉及调用重试、熔断以及服务幂等性涉及。
一致性方面
涉及强一致和弱一致,强一致性使用 2PC,最终一致性使用异步通讯方式。
流控方面
涉及限流以及降级的技术。
自动化运维方面
涉及网关流量调度以及服务的监控。
弹力设计开发和运维
比较 Spring Cloud 和 Kubernetes
微服务考量 | Spring Cloud & Netflix OSS | Kubernetes |
---|---|---|
配置管理 | Config Server, Consul, Netflix Archalus | Kubernetes ConfigMap & Secrets |
服务发现 | Netflix Eureka, Hashicorp Consul | Kubernetes Service & Ingress Resources |
负载均衡 | Netflix Ribbon | Kubernetes Service |
API 网关 | Netflix Zuul | Kubernetes Services & Ingress Resources |
服务安全 | Spring Cloud Security | - |
日志中心 | ELK Stack (LogStash) | ELK Stack (Fluentd) |
指标中心 | Netflix Spectator & Atlas | Heapster, Promethues, Grafana |
分布追踪 | Spring Cloud Slueth, Zipkin | OpenTracing, Zipkin |
弹性容错 | Netflix Hystrix, Turbine & Ribbon | Kubernetes Health Check & resource isolation |
自伸缩自愈 | - | Kubernetes Health Check, Self Healing, Autoscaling |
打包发布调度 | Spring Boot | Docker/Rkt, Kubernetes Scheduler & Deployment |
作业管理 | Spring Batch | Kubernetes Jobs & Scheduled Jobs |
单例应用 | Spring Cloud Cluster | Kubernetes Pods |
服务涵盖面比较
关键技术 | Spring Cloud | Kubernetes | IaaS |
---|---|---|---|
DevOps 经验 | ☑️ | ||
自伸缩自愈 | ☑️ | ||
弹性容错 | ☑️ | ☑️ | |
分布追踪 | ☑️ | ☑️ | |
指标中心 | ☑️ | ☑️ | |
日志中心 | ☑️ | ☑️ | |
API 网关 | ☑️ | ☑️ | |
作业管理 | ☑️ | ☑️ | |
单例应用 | ☑️ | ☑️ | |
负载均衡 | ☑️ | ☑️ | |
服务发现 | ☑️ | ☑️ | |
配置管理 | ☑️ | ☑️ | |
应用打包 | ☑️ | ☑️ | |
发布调度 | ☑️ | ||
进程隔离 | ☑️ | ||
环境管理 | ☑️ | ||
资源管理 | ☑️ | ||
操作系统 | ☑️ | ||
虚拟化 | ☑️ | ||
硬件存储网络 | ☑️ |
服务的功能特性
能力 | Spring Cloud(SC) 结合 Kubernetes(K) |
---|---|
DevOps 经验 | 自服务(K)、多环境能力(K) |
自伸缩自愈 | Pod/Cluster Autoscaler(K)、HealthIndicator(SC)、Scheduler(K) |
弹性容错 | HealthIndicator(SC)、Hystrix(SC)、HealthCheck(K)、Process Check(K) |
分布追踪 | Zipkin |
指标中心 | Heapster、Promethues、Grafana |
日志中心 | EFK |
作业管理 | Spring Batch(SC)、Scheduled Job(K) |
负载均衡 | Ribbon(SC)、Service(k) |
服务发现 | Service(K) |
配置管理 | Externalized Configurations(SC)、ConfigMap(K)、Secret(K) |
服务逻辑 | Apache Camel(SC)、Spring Framework(SC) |
应用打包 | Spring Boot maven plugin(SC) |
发布调度 | Deployment strategy(K)、A/B(K)、Canary(K)、Scheduler strategy(K) |
进程隔离 | Docker(K)、Pods(K) |
环境管理 | Namespaces(K)、Authorizations(K) |
资源管理 | CPU 内存管控(K)、命名空间资源配额(K) |
IaaS | GEC、Azure、CenturyLink、VMware、Openstack |
末了
重新总结了一下文中提到的内容:弹力设计、弹力设计总概览、开发运维实践。
这篇关于01.04 Day 20 - 弹力设计篇之“弹力设计总结”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!