微服务特点
- 服务组件化
- 按业务能力组织服务
- 去中心化
- 基础设施自动化
微服务具备业务独立、进程隔离、团队自主、技术无关轻量级通信和交付独立性等“微”特性。
微服务拆分
拆分是由业务驱动的,通过业务来进行一些横向拆分或者纵向拆分,考虑拆分粒度,甚至组织架构也要进行调整。
拆分是一个由粗到细逐步演进的过程。
考虑服务治理、配置中心、分布式事务
考虑微服务框架:
- Dubbo:服务的定义、服务的注册与发现、服务的调用和路由
- Spring Cloud:Consul
考虑熔断、降级、限流、隔离。
- Dubbo通过mock参数提供了降级的特性。
- Hystrix熔断和隔离。
- Dubbo通过信号量的配置提供了一些基础的限流特性,限制消费者的调用并发,或者提供者的执行并发。
- 限流框架:基于令牌桶和漏桶算法QPS限流,基于Redis集群级别的限流。
考虑服务监控。日志、Metrics、HealthCheck。
- 日志ELK。监控请求数量,响应时间
- Metrics。时序数据库influxdb,Grafana。采集Dubbo调用数据
- 健康检查,数据库、消息队列,缓存
- 报警PageDuty,Siren
- 调用链路Dapper。TarceID,SpanID 等是通过Dubbo的隐式传参来传递。
服务测试
- 接口测试,契约测试,网易NEI
- 单链路压测、全链路压测。LoadTest。容量管理,限流阈值。
网关
- Dubbo泛化调用
- 自研API网关
- 认证,服务编排
注册中心
- Dubbo-ZooKeeper:惊群效应。强一致性模型。应用启动十分缓慢。ZooKeeper写是不可扩展的。
- Consul、Eruka、etcd、Nacos
同城双活,异地双活
- Dubbo同机房优先调用
- 跨DC容灾
容器化
- DevOps
- Service Mesh
网友评论