点击蓝色“程序猿DD”关注我

回复“资源”获取独家整理的学习资料!

来源:锅外的大佬



微服务是具有边界上下文的松散耦合服务,使您能够独立开发,部署和扩展服务。它还可以定义为构建独立开发和部署的分布式系统的架构模式。在微服务架构中处理服务之间的通信是一项挑战,因为它们需要在不可靠的网络中相互通信。

1. 微服务架构的复杂性

分布式应用的一个问题是它们通过网络进行通信 - 这是不可靠的。因此,您需要以容错的方式设计您的微服务,并能够优雅地处理故障。在您的微服务架构中,可能有很多服务相互通信。您需要确保一个服务宕机了,不会导致整个架构崩溃。

微服务架构中有许多组件,因此这会带来更多的故障点。故障可能由多种原因引起 - 代码中的错误和异常,新代码的发布,部署问题,硬件故障,数据中心故障,不良的架构,缺乏单元测试,不可靠的网络通信,服务的依赖, 等等。

complexities-in-a-microservice-architecture

2. Netflix OSS to the Rescue 


Netflix是最早采用微服务的公司之一。为了跟上其增长速度,Netflix决定从庞大而单一的数据中心转向基于云的微服务架构,以实现高可用,大规模和速度。基于其成功案例,Netflix开源了许多工具/技术,为微服务架构提供支持。这些工具和组件已经成为许多企业从单体应用架构到微服务架构的驱动力。

Netflix OSS是Netflix开源的一组库和框架,用于解决设计大规模分布式系统的问题。阅读有关Netflix开源软件中心的更多信息here.

Spring Boot可以轻松创建独立的、生产级的基于Spring的应用程序。有关信息here.

通过一些简单的注释,您可以快速启用和配置应用程序内的通用模块,并使用经过实战考验的Netflix组件构建大型分布式系统。提供的模块包括服务发现(Eureka), 断路器 (Hystrix), 智能路由(Zuul)和客户端负载平衡(Ribbon)。

netflix-oss-framework

2.1. Netflix OSS的问题

  • Netflix库与Java平台紧密耦合,如果您在Java平台中开发服务,它们非常适合。但是,在多语言架构中,您需要查找Netflix之外的库来处理服务之间的通信。

  • Netflix库需要嵌入到每一个微服务中,并附带业务功能。这会导致应用程序膨胀,因为您需要在所有服务中复制类似的代码。

  • 同时具有业务逻辑和基础架构逻辑会增加整体应用程序的复杂性。

  • 由于您现在需要处理Netflix组件的修补/升级,因此也增加了操作复杂性。

  • 需要额外的工具来提高微服务体系结构的监控性。

    netflix-oss-issues

3. 什么是Sidecar设计模式

sidecar 设计模式在云原生社区中越来越受欢迎并得到更广泛的采用。构建具有高度可扩展性,弹性,安全性和可监控性的微服务架构具有挑战性。Service Mesh架构的发展已经改变了游戏规则。它将与微服务架构相关的复杂性转移到单独的基础架构层,并提供许多功能,如负载平衡,服务发现,流量管理,断路,遥测,故障注入等。

sidecar-design-pattern

3.1. 使用Sidecar模式的好处


  • 通过抽象与基础架构相关的常见功能到不同的层,降低了微服务代码的复杂性。

  • 减少微服务架构中的代码重复,因为您不需要在每个微服务中编写配置代码。

  • 提供应用程序代码和底层平台之间的松散耦合。

3.2. 如何实现Service Mesh

要实现服务网格,您可以在服务旁边部署代理。这也被称为Sidecar模式.。Sidecars从应用程序中抽象出复杂性,并处理服务发现,流量管理,负载平衡,断路器等功能。

来自Lyft的Envoy是为云原生应用程序设计的最流行的开源代理。Envoy与每项服务并行运行,并以平台无关的方式提供必要的功能。服务的所有流量都通过Envoy代理流通。

istio-sidecar

4. Istio 架构

Istio是一个非常受欢迎的Service Mesh框架,它默认使用Lyft的Envoy作为sidecar代理。Sidecar与每个服务实例一起部署,它提供了一个界面来处理服务发现,负载平衡,流量管理,内部服务通信,监控等功能。Service Mesh为您提供了不再将服务与服务之间的通信作为你应用程序代码的一部分的自由。您可以让Service Mesh为您处理这种复杂性,而不是使您的微服务具有类似的功能。

Istio Service Mesh由两个主要组件组成:

  • 控制面板的职责是管理和配置sidecar代理以实施策略并收集遥测数据。

  • 数据面板的职责是处理服务之间的通信,并负责服务发现,负载均衡,流量管理,健康检查等功能。

istio-architecture-revamped


推荐阅读

  • 如何避免Java中的回调“地狱”

  • Redis作者的公开信:开源维护者的挣扎和无奈

  • 一文了解web无状态会话token技术JWT

  • 程序员需要知道的缩写和专业名词

  • 无索引的亿级数据该如何删除

自律到极致 - 人生才精致:第10期

明日奉上,关注我!不错过本次签到活动!

2019

与大家聊聊技术人的斜杠生活

点一点“阅读原文”小惊喜在等你

微服务之旅:从 Netflix OSS 到 Istio Service Mesh相关推荐

  1. 使用SpringBoot开启微服务之旅

    \ 本文要点 \\ 微服务可以使你的代码解耦\\t 微服务可以使不同的团队专注于更小范围的工作职责.使用独立的技术.更安全更频繁地部署\\t SpringBoot支持各种REST API的实现方式\\ ...

  2. 微服务之旅的经验分享

    多年来,我们一直努力展示众多微服务实践者在采用微服务的过程中获得的经验和教训.Piotr Gankiewicz是一名软件工程师.他踏上了微服务之旅,现在决定分享一些过程当中的经验和教训.当然,就像所有 ...

  3. php分布式微服务开发_php| php 微服务之旅: devops

    date: 2019-05-22 20:37:57 title: php| php 微服务之旅: devops 本篇属于 PHP 微服务之旅 系列, 此系列会持续更新, 敬请期待. 如果说 微服务应用 ...

  4. 微服务全链路跟踪:jaeger集成istio,并兼容uber-trace-id与b3

    微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容u ...

  5. 敏捷水手——单体法到微服务之旅

    \ 本文要点 \\ 探究持续四年多的渐进式改革是什么样子:\\t 探索为什么在变革软件和组织设计时要遵循康威定律:\\t 看看如何将领导力应用到不同的团队.领域和层级:\\t 举例说明变革管理如何依赖 ...

  6. 开源微服务编排框架:Netflix Conductor

    简介:本文主要介绍netflix conductor的基本概念和主要运行机制. 作者 | 夜阳 来源 | 阿里技术公众号 本文主要介绍netflix conductor的基本概念和主要运行机制. 一 ...

  7. 华为消费者云的ServiceComb 微服务之旅

    2018年6月27日,ApacheServiceComb在北京举办主题Workshop,当中,来自华为消费者云的架构师李林锋分享了<ServiceComb在华为消费者云的亿级用户微服务实践> ...

  8. 服务治理在猫眼的演进之路-Service Mesh

    首先我们看一下,微服务架构的演进历程中我们更关注的是什么?一般微服务业务应用架构的演进历程无非都是单体应用 -> 服务化 -> 云原生 -> Serverless.这个过程中,大家可 ...

  9. 微服务等于Spring Cloud?了解微服务架构和框架

    作者:TIM XU 来源:https://xiaoxubeii.github.io/articles/microservices-architecture-introduction/ 微服务初探 什么 ...

最新文章

  1. JavaScript基础学习--事件代理
  2. springmvc整合mybatis框架源码 bootstrap html5 mysql oracle maven SSM
  3. Zookeeper分布式一致性原理(七):Curator客户端
  4. 统计app用户在线时长_「云工作普及系列」2.如何实时统计工作时长,提高工作效率
  5. mysql数据类型支持比较运_Mysql支持的数据类型(总结)
  6. 记一次lvs-tunnel模式的故障分析(7)
  7. NFS网络文件系统服务配置、验证及错误解决
  8. Xtrabackup远程备份+限速
  9. ANR问题的log位置
  10. 4.大数据架构详解:从数据获取到深度学习 --- 数据获取
  11. mongodb搭建和基本语法
  12. 训练一个简单的游戏AI(Deep Q Network)
  13. 电磁兼容EMC标准 CISPR 22:EN 55022
  14. Stm32串口通信基础实验
  15. Eclipse快捷键(全)
  16. 代码传奇 张一鸣的成长之路
  17. mysql修改游戏数据_Sqlite3 数据库工具修改游戏数据库文件图文教程
  18. 网易的java开发_网易微专业java开发工程师2021
  19. Framer:开源原型设计工具,巨头们的心头好
  20. 析构函数什么时候会调用?

热门文章

  1. java 反序列化工具 marshalsec改造 加入dubbo-hessian2 exploit
  2. linux expect 自动交互命令 总结
  3. python操作yaml
  4. python+soket实现UDP协议的局域网广播程序
  5. 关于WM_NCHITTEST消息(移动无标题对话框多个)
  6. C语言一个双向链表的实现
  7. C语言头文件和库的一些问题
  8. Android中的各种Adapter
  9. ELF文件的加载和动态链接过程
  10. 大竹中学2021高考成绩查询,2021年大竹中学升学率高不高?