Micro Service

Micro Service & Service Mesh

展开查看详情

1.微服务 MICRO SERVICE

2.PREFACE ▸ 在过去的三年中,微服务成为技术热点,大量互联网公司开 始落地微服务。 ▸ Java社区中,伴随微服务的大潮,以Spring Boot、Spring Cloud为代表的微服务开发框架迅速普及。 ▸ Spring Boot、Spring Cloud之外,新一代微服务开发技术正 在悄然兴起。

3.WHAT IS MICRO SERVICE

4.MICRO SERVICE 什么是微服务? ▸ 微服务是一种软件体系结构类型,复杂的应用程序由许多微小并且相互 独立的服务组成。 ▸ 这些服务相互之间通过API接口进行通信。 ▸ 这些服务是微小的,高度松耦合,并且只关注在一个小的任务。 ▸ 服务是自治并且完整的。控制所有组件,包括UI、中间件、存取数据 和事务。

5.MICRO SERVICE

6.MICRO SERVICE 微服务如何实践 业务架构 技术架构 接入层 反向代理 RPC 服务层 MQ 配置中心 KV访问层 存储层 DB访问框架

7.MICRO SERVICE 微服务拆分 ▸ 拆分时机 ▸ 提交代码频繁出现大量冲突 ▸ 横向扩展流程复杂,主要业务和次要业务耦合严重 ▸ 熔断降级难处理 ▸ 拆分方式 ▸ 横向拆分服务 ▸ 纵向拆分服务

8.MICRO SERVICE 横向拆分

9.MICRO SERVICE 纵向拆分

10.MICRO SERVICE 微服务-设计模式(DESIGN PATTERNS) ▸ Aggregator Micro Service Design Pattern(聚合器模式)

11.MICRO SERVICE 微服务-设计模式(DESIGN PATTERNS) ▸ Proxy Micro Service Design Pattern(代理模式)

12.MICRO SERVICE 微服务-设计模式(DESIGN PATTERNS) ▸ Chained Micro Service Design Pattern(链式模式)

13.MICRO SERVICE 微服务-设计模式(DESIGN PATTERNS) ▸ Branch Micro Service Design Pattern(分支模式)

14.MICRO SERVICE 微服务-设计模式(DESIGN PATTERNS) ▸ Shared Micro Service Design Pattern(分享模式)

15.MICRO SERVICE 微服务-设计模式(DESIGN PATTERNS) ▸ Asynchronous Micro Service Design Pattern(异步模式)

16.MICRO SERVICE 微服务-RPC框架 ▸ RPC框架 ▸ Thrift ▸ gRPC

17.MICRO SERVICE 微服务-RPC框架 ▸ RPC框架 ▸ Thrift ▸ gRPC

18.MICRO SERVICE 微服务RPC-服务限流、隔离 ▸ 支持服务限流,针对接口、方法、调用者分别限流QPS ▸ 监控每个接口的超时情况,超时多的接口请求会自动路由到独立的慢线 程处理,如果该接口恢复正常,则回到正常的共享线程池,也可以为某 些接口方法配置独立的线程池

19.MICRO SERVICE 微服务RPC-服务降级 ▸ 支若依赖的服务是弱依赖,可以降级处理 ▸ 降级的结果可以使自动返回默认值、抛出降级异常、返回mock的对象

20.MICRO SERVICE 微服务-消息队列(MESSAGE QUEUE) ▸ MQ框架 ▸ Rabbit MQ ▸ Kafak ▸ Rocket MQ ▸ Pulsar

21.MICRO SERVICE 微服务-消息队列 ▸ MQ作用 ▸ 服务间解耦:避免过多RPC调用给系统的稳定性带来风险,可实现不 同角色的系统解耦 ▸ 异步:发送方&接收方不需要同时在线,消息堆能力 ▸ 削峰:秒杀/电商类项目 ▸ 复用:一次发送多次消费

22.MICRO SERVICE 微服务-其他组件 ▸ 服务注册与发现 ▸ 服务治理 ▸ 服务故障熔断 ▸ 链路追踪 ▸ 分布式数据库 ▸ 日志报警 ▸ 服务监控 ▸ ..........

23.IS MICRO SERVICE THE END

24.MICRO SERVICE 内容多 门槛多 Spring Cloud Netflix OSS spring-cloud-commons eureka spring-cloud-gateway hystrix spring-cloud-config Turbine spring-cloud-security Atlas spring-cloud-zookeeper Feign spring-cloud-aws Ribbon spring-cloud-cloudfoundry zuul ▸ 需要多长时间,才能让整个开发团队掌握并熟练使用?

25.MICRO SERVICE 美中不足 服务治理功能不够齐全 高级功能 基本功能 运维测试类 1. 加密 1. 服务注册与服务发现 1. 动态请求路由 • 密钥或证书生成/发放/轮 • 主动健康检查 换/撤销 • 服务版本 2. 负载均衡 2. 认证/授权/鉴权 • 分段服务(staging service) 3. 故障处理和恢复 • OAuth • 金丝雀(canaries) • 超时/熔断/限流/重试 • 多重授权机制 • A/B测试 4. RPC支持 3. 分布式追踪 • 蓝绿部署 • Thrift/gRPC • ZipKin/Jaeger • 跨DC故障切换 5. HTTP/2支持 4. 监控 • 黑暗流量(dark traffic) 6. 协议转换/提升 • 日志/度量(Metrics) 2. 故障注入 ▸ 打算再投入多少时间和精力?

26.MICRO SERVICE 雪上加霜 不得不面对的问题 ▸ 业务开发团队的强项往往不在技术,而是对业务的理解 ▸ 应用的核心价值在于业务实现:微服务是手段,不是目标 ▸ 微服务拆分、API拆分、数据一致性等等比学习微服务框架更艰巨 ▸ 对于旧系统如何进行微服务改造,是个更加痛苦的考验业务 ▸ 开发团队往往承受极大的业务压力,时间和人力永远不充足

27.MICRO SERVICE 反省:目标是什么 最艰巨的挑战,与服务本身无关,而是服务间的通讯 所有的努力,都是为了保证将请求发到正确的地方 是不是有一种似曾相识的感觉? 基于TCP开发应用时,需要关心链路层吗? 基于HTTP开发应用时,需要关心TCP层吗? 为什么我们开发微服务时,就一定要这么关心基础设施和类库框架?

28.SERVICE MESH-下一代微服务 部署模型:单个服务调用表现为SIDECAR

29.SERVICE MESH 部署模型:多个服务调用表现为网络