Service Mesh所应对的8项挑战

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Lori Macvittie

微服务架构是把双刃剑,我们享受它带来的开发速度(development velocity),却也不得不面对服务间通讯带来的复杂性问题。

目前大多数扩展容器化微服务的架构多是基于proxy-based复杂均衡器实现的。在这些架构的问题在于,容器环境内部伸缩往往依赖于IP tables,并受制于传统网络层。

所有这些代理提供相同的核心功能:扩展容器环境中的分布式服务。这些服务是一种短暂的构建(ephemeral constructs),实际上并不存在——除了在定义它们的资源(配置)文件中。基于IP tables的扩展解决方案的问题是,这些服务是7层(HTTP)构造,通常充当单个API调用的“后端”,而非整个应用程序。

正如我们所知道的,从客户端显示为单个、整体构造的应用,实际上由许多不同的(和分布式的)微服务组成。有些服务是纯内部的,供其他服务使用,这意味着要在容器环境中进行大量的service-to-service通信。

在这些环境中,一切都是HTTP/HTTP2之上的api,因此我们需要L7(HTTP)路由。我们还需要一致的安全、身份验证和策略执行。所有这些都是基于IP tables的方法无法实现的。

针对种种微服务架构服务间通讯的问题和难点,目前出现的一些Service Mesh相关开源项目已经开始着手解决这些挑战,核心集中于以下8个方面:

  • 构建 - 除了将策略与CI/CD工具链集成并确保配置的声明性模型,以便将service mesh视为一层基础设施之外,构建并不是Service Mesh的“强项”
  • 测试和集成 – Service Mesh可以帮助确保开发、测试、生产之间一致的策略。分阶段部署这种方法在过去运作良好,但它是将延迟插入部署过程的障碍之一。企业正在寻找一种将服务直接部署到生产的方法,并采用流量控制和回滚机制来处理故障。
  • 版本控制 - 服务网格可以作为基本API网关,根据API版本等变量路由流量,甚至可以翻译版本,以便在API版本过渡期间提供帮助。客户端升级并不总是强制的,这意味着会存在多个版本。Service Mesh可以将对旧API版本的请求转换为最新版本,以帮助降低维护同一API的多个版本的成本和负担。
  • 部署 - 得益于HTTP能力,Service Mesh是实现蓝/绿部署,金丝雀测试和流量控制的好方法。
  • 日志记录 - 分布式日志记录始终是一个问题,而且在实例生存时变化很大的环境中,它会更加麻烦。Service Mesh提供了一个通用的集中位置来实现日志记录以及执行请求跟踪等功能的能力。
  • 监控 - 监控是应用扩展的核心之一。虽然应用可以通过实现某些功能(重试、断路等)来处理服务不可避免的故障,但会给应用带来不必要的负担。Service Mesh承担了service-to-service通信的负担,并提供监控,其目标是在生产中专注于MTTD和MTTR,因为在生产中运行很困难,故障是不可避免的。
  • 调试 - 系统越复杂,调试就越困难。Service Mesh可以帮助进行根本原因分析,使用分析和遥测提供统计数据和故障前通知,并隔离容器(而不是杀死容器),以便对其进行彻底检查。这在由于内存泄漏缓慢导致故障的情况下特别有用。
  • 网络 - 网络仍然是容器的关键,可能比在不太复杂的环境中更为重要。从该网络中抽象服务的愿望意味着您不希望在每个服务中实现许多移动部件:服务发现、SSL和证书管理、断路器、重试、健康监控等。引入需要包含与网络相关的功能会增加微服务,并引入额外的架构和技术债务。服务网格承担了这些功能,并提供了所需的规模和安全性,而不影响开发。

Service mesh是一个令人兴奋的演变,它结合了云和容器的现代原则和坚实的规模基础。随着2018年以来容器技术的普以及对企业级应用扩展和支持的需求,Service Mesh的未来值得期待。

  • END -

关于Rainbond

Rainbond是一款以应用为中心的开源PaaS,由好雨基于Docker、Kubernetes等容器技术自主研发,可作为公有云或私有云环境下的应用交付平台、DevOps平台、自动化运维平台和行业云平台,或作为企业级的混合云多云管理工具、Kubernetes容器管理工具或Service Mesh微服务架构治理工具。

  • Rainbond项目网站
  • 试用Rainbond公有云
    • 注册或使用Demo账号/密码登录:rainbond-demo/rainbond-demo
  • Github
  • 码云
  • 文档
  • 微信群: 添加微信“zqg5258423”并接受邀请入群

  • 技术 Service Mesh真的是云原生应用的绝配吗?
  • 技术 Service Mesh微服务架构的崛起 2018/0706
  • 技术 Service Mesh:什么是Sidecar模式 2018/06/21
  • 技术 开源PaaS Rainbond v3.6.0正式发布,Service Mesh开箱即用 2018/06/20
  • 技术 解读Rainbond ServiceMesh微服务架构_开源PaaS Rainbond 2018/05/15
  • 技术 Pinpoint-java性能分析最佳实践_开源PaaS Rainbond 2018/05/08
  • 技术 通过Minio搭建私有化对象存储服务_开源PaaS Rainbond 2018/04/26
  • 技术 揭秘高可用负载均衡组件Rainbond-Entrance_开源PaaS Rainbond 2018/04/25
  • 技术 Rainbond插件体系设计简介_开源PaaS Rainbond 2018/02/24
  • 技术 Rainbond如何对接外部Maven仓库_开源PaaS Rainbond 2018/01/18
  • 技术 Spring Boot框架配置MySQL_开源PaaS Rainbond 2018/01/10
  • 技术 基于Midonet的多租户网络设计_开源PaaS Rainbond 2018/01/09

转载于:https://my.oschina.net/zhouyq/blog/1861476

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32cubeide外部中断_【STM32】HAL库 STM32CubeMX教程三----外部中断(HAL库GPIO讲解)

前言上一节我们讲解了STM32CubeMX的基本使用和工程的配置,那么这一节我们正式来学习CubeMX配置STM32的各个外设功能了今天我们会详细的带你学习STM32CubeMX配置外部中断,并且讲解HAL库的GPIO的各种函数,带你学习不一样的STM32那么话不多说&am…

html5兼容ie

https://www.jb51.net/html5/143049.html转载于:https://www.cnblogs.com/rivsidn/p/10913532.html

什么叫内部银团_什么是紫钛晶?紫钛晶是不是天然水晶?

都说紫钛晶是紫水晶与钛晶的结合,听上去好像这种水晶不是天然的,像是人工合成的,事实上并非如此,紫钛晶也是天然形成的水晶,由于内部的包裹体是金色的,因此被称为紫钛晶。和菩心晶舍家的晶舞倾城一起了解紫…

如何使用Squid服务来构建=》传统和透明代理服务器,通俗易懂!

1、缓存代理概述: 作为应用层的代理服务软件,Squid主要提供缓存加速和应用层过滤控制的功能 2、代理的工作机制: (1)当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,若缓…

排序算法-C++实现

#include <iostream>using namespace std;void show(int M[], int n) {for(int i0; i<n; i)cout<<M[i]<<" ";cout<<endl; }//快速排序 void quick_sort(int M[], int left, int right) {if(left < right){int i,j,x;i left;j right;…

Bootstrap开发框架视频整理

最近到客户处进行实地培训&#xff0c;整理了很多培训的材料&#xff0c;现将它们录制相关主题的视频&#xff0c;作为我的Bootstrap开发框架的知识补充&#xff0c;希望给感兴趣的朋友进行了解。培训内容主要包括基础框架部分、MVC框架部分、Bootstrap框架部分、Bootstrap重要…

安卓随机通话记录_Android 通话记录

查询通话记录private static final String[] CALLLOGS_PROJECTION new String[]{CallLog.Calls._ID,CallLog.Calls.CACHED_NAME, CallLog.Calls.NUMBER, CallLog.Calls.TYPE, CallLog.Calls.DATE,CallLog.Calls.DURATION};/*** * 概述&#xff1a;获取最近10条通话记录 */publ…

【c基础】入门语法

%d:占位符 表示要输出一个整形数。 %f:为float 浮点数 %lf:为double型 双精度浮点数 \n:换行 const:定义一个常量,一旦被初始化就不能修改&#xff0c;只读的变量&#xff08;read-only variable&#xff09;。 整数运算 的结果是整数 如果有小数就抛弃没有考虑四舍五入。 一&a…

vue的移动app项目中,自定义拖拽指令的问题

使用vue的都知道vue有一个自定义指令&#xff0c;我比较喜欢的就是拖拽的自定义指令&#xff0c;感觉挺方便的&#xff01; //组件内的拖拽指令 directives: {//组建内自定义指令drag: {// 指令的定义bind: function(el, value) {let oDiv el; //当前元素let self this; //上…

弹窗php整人_[整人小程序] 超级信息框(无限弹窗++)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼貌似刚才缩进空格被吞了&#xff0c;再发一次Set FSO  createobject("scripting.filesystemobject")Set ws  Createobject("Wscript.shell")Set SA  CreateObject("Shell.Application")If …

day22 Java学习 IO流(序列流)

IO流&#xff08;序列流&#xff09; 序列流&#xff1a; * 可以把多个字节输入流整合成一个&#xff0c;从序列流中读取数据时&#xff0c;将从被整合的第一个流开始读&#xff0c;读完一个之后继续读第二个。 整合方式&#xff1a; * Seq uenceInputStream ( InputStream &am…

网站建设-简单动态网站搭建

通过前面Clouder课程的学习&#xff0c;或许你已经掌握了在云服务器上发布和部署静态网页的方法&#xff0c;那么如何搭建一个可以随时更新内容的动态网站&#xff1f;通过本课程的学习&#xff0c;你将掌握如何在云端搭建全世界使用最多的WordPress网站的方法&#xff0c;并学…

mysql的concat函数_MySQL中concat函数(连接字符串)

MySQL中concat函数使用方法&#xff1a;CONCAT(str1,str2,…)返回结果为连接参数产生的字符串。如有任何一个参数为NULL &#xff0c;则返回值为 NULL。注意&#xff1a;如果所有参数均为非二进制字符串&#xff0c;则结果为非二进制字符串。如果自变量中含有任一二进制字符串&…

利用airTest的图像实别技术测试Web应用

airTest的第三方类库中有图像实别功能&#xff0c;根据官网的介绍&#xff0c;这个功能是能够在Windows上用来定位元素&#xff0c;进行操作的。尝试过以下脚本&#xff0c;发现真的可以。 from selenium.webdriver.chrome.options import Options from selenium import webdri…

MySQL主从复制故障解决

丛库复制停止&#xff0c;进丛库查看&#xff0c;报错1007&#xff0c;数据库已存在&#xff0c;不能创建数据库 mysql> show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: No Last_Errno: 1007 Last_Error: Error Cant create database test; database exis…

Unraveling the JPEG file

(文章还剩实践部分没写&#xff0c;答辩过后补上...) JPEG文件在当下数字化生活中是无处不在的&#xff0c;但是在熟悉的JPEG面纱背后&#xff0c;隐藏着一些算法&#xff0c;它们去除了人类眼中无法察觉到的细节。这产生了最高的视觉质量与最小的文件大小。让我们来看看这一算…

mysql interval 3 day_Mysql之INTERVAL与DATE_SUB与EXTRACT函数的使用

1. INTERVALINTERVAL代表的是时间间隔MySQL中的时间间隔类型有如下几种:1.1 利用INTERVAL做时间的加减法示例&#xff1a;加法:SQL>SELECT DATE 2018-11-01 INTERVAL 10 11 DAY_HOUR;结果:2018-11-11 11:00:00减法&#xff1a;SQL> select date 2018-11-11 11:00:00 -INT…

(二十四)面向对象

class Car {int num;String name;String color;public static void run() {System.out.println("行驶中");} } //再类中定义的变量&#xff1a;成员变量 //在类中定义的函数&#xff1a;成员函数 class Demo1 {public static void main(String[] args) {//创建一个ca…

mysql 三主_MySQL主主复制3

一、创建并授权用户在每一台(主)服务器上创建一个用户&#xff0c;并为之授权&#xff0c;使它们可以互相访问彼此的数据库在Server-1上&#xff1a;创建一个充许Server-2来访问的用户server2,密码为&#xff1a;server2mysql> GRANT REPLICATION SLAVE ON *.*> TO ‘ser…

0727日志

为什么80%的码农都做不了架构师&#xff1f;>>> c端线上地址 http://x.diandanme.com/fe/?d183#/ 什么时候来需求&#xff0c;我做好准备了吗&#xff1f; eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC94LmRpYW5kYW5tZS5jb21cL2FwaVwvd2VjaGF0XC…