1. 服务网格白热化

服务网格是一个专注于服务间通信的基础设施层,也是目前最受关注的与云原生有关的话题。随着容器的普及,服务拓扑变得越来越动态化,这对网络功能提出了更多的要求。服务网格通过服务发现、路由、负载均衡、健康检测和可观察性来管理流量,简化容器与生俱来的复杂性。

随着 HAProxy、traefik 和 NGINX 逐步把自己定位成数据平面,服务网格也变得越来越流行。尽管服务网格还没有得到大规模部署,但确实有些企业已经在生产环境中运行服务网格。另外,服务网格不仅可以用在微服务或 Kubernetes 环境中,也可以被用在 VM 和无服务器架构的环境中。例如,美国国家生物技术信息中心虽然没有使用容器,但他们使用了 Linkerd。

服务网格还可以用在混沌工程中。服务网格可以给系统注入延迟和故障,这样就不需要在每台主机上安装后台进程。

Istio 和 Buoyant 的 Linkerd 是目前最为流行的服务网格框架。另外,Buoyant 在去年 12 月份开源了用于 Kubernetes 的服务网格框架 Conduit V0.1。

2. 事件驱动架构的崛起

随着业务场景的不断变化,我们已经看到了基于推送或事件的架构正在成为一种趋势。服务向订阅事件的观察者容器发送事件,容器异步做出响应,事件发送者可能对此一无所知。与请求响应式架构不同的是,在基于事件的系统架构中,发起事件的容器并不依赖下游的容器,它们的处理过程和加载的事务与下游容器的可用性或完成情况无关。这种架构的另一个好处是,开发者可以更加独立地设计各自的服务。

在容器环境中使用基于事件的架构时,功能即服务(FaaS)可以助他们一臂之力。在 FaaS 架构中,功能以文本的形式保存在数据库中,然后由事件来触发它们。在调用一个功能时,API 控制器会收到一个消息,并将它通过负载均衡器发送到消息总线,调用者容器负责处理队列中的消息。消息处理完毕后,结果被保存在数据库中,并发送给用户,而功能暂时退役,等待下一次触发。

FaaS 有两大好处。首先,缩短了服务开发时间,因为除了源代码,不需要创建其他任何东西。其次,降低了开销,因为功能的管理和伸缩通常是由 FaaS 平台(比如 AWS Lambda)来完成的。当然,采用 FaaS 本身也存在一些挑战。FaaS 要求解耦每一个服务,那么就会存在大量的服务需要发现、管理、编配和监控。因为缺乏对服务依赖链的全盘了解,FaaS 系统难以调试,而且可能会出现无限循环依赖问题。

在目前看来,FaaS 并不适用于某些场景,比如那些需要较长处理时间、需要往内存里加载大量数据或需要稳定性能的场景。开发者主要使用 FaaS 来运行后台作业和处理临时事件,不过我们相信,随着存储层速度的加快和平台性能的提升,FaaS 的应用场景会越来越多。

2017 年秋天,CNCF 对 550 名用户进行了问卷调查,其中 31% 的人正在使用无服务器架构技术,28% 的人打算在未来 18 个月使用无服务器架构技术。而在使用无服务器架构技术的 169 人当中,有 77% 使用的是 AWS Lambda。虽说 Lambda 或许是领先的无服务器架构平台,但我们相信边缘计算仍然有机会。边缘计算将在物联网和 AR/VR 领域大展拳脚。

3. 安全模型的变化

因为对内核访问方面的限制,部署在容器中的应用程序相对安全。在 VM 环境中,虚拟设备驱动器是唯一暴露可见性的地方。而在容器环境里,操作系统提供了系统调用,信号源也变得更加丰富。之前,管理员需要在 VM 中安装代理,但那样太复杂了,需要管理太多的东西。容器提供了更清晰的可见性,相比 VM,与容器的集成会更加容易。

451 Research 公司发布的一份调查报告表明,安全性是影响容器普及的最大障碍。在一开始,安全漏洞就已成为容器环境最主要的问题。随着越来越多的容器镜像的发布,确保这些镜像不含有漏洞便成为当务之急。随着时间的推移,容器镜像扫描和认证成为了一种有利可图的生意。

在 VM 环境中,hypervisor 扮演着访问控制点的角色,而对于一个具备内核访问权限的容器来说,它可以访问内核上的其他所有容器。因此,使用容器的企业必须限制容器与宿主机之间的交互行为以及容器将会执行的系统调用。确保宿主机的 cgroup 和 namespace 配置妥当也是非常重要的一点。

传统的防火墙通过 IP 地址规则来控制网络流量。不过,这种技术无法在容器环境中使用,因为动态编配需要重用 IP。在生产环境,运行时攻击检测是非常关键的安全手段,通过构建容器指纹和定义行为基准,就可以很容易检测出异常行为,并把攻击者隔离在沙箱中。451 Research 公司的报告指出,受调的 52% 企业在生产环境中使用了容器,可见,在容器环境中使用运行时攻击检测十分有必要。

4. 从 REST 到 GraphQL

GraphQL 是 Facebook 于 2012 年创建并于 2015 年开源的一套查询语言 API 规范。GraphQL 的类型系统允许开发者自己定义数据 schema,可以增加新字段,也可以删除旧字段,这些都不会影响已有的查询,也不需要修改客户端。GraphQL 非常强大,因为它没有与特定的数据库或存储引擎绑定在一起。

GraphQL 服务器使用一个单独的端点来提供所有的功能。只要定义好资源之间类型和字段的关系(这个与 REST 端点不太一样),GraphQL 就可以跟踪属性之间的关系,在单个查询中从多个资源获取数据。在使用 REST 时,可能需要为单个请求加载多个 URL,这样不仅增加了网络跳转,还拖慢了查询速度。通过减少网络跳转,GraphQL 降低了单个数据请求所要耗费的资源。GraphQL 返回的数据通常是 JSON 格式。

使用 GraphQL 还有其他好处。首先,客户端和服务器端之间解耦开了,这样就可以分开维护。GraphQL 使用相似的语言进行客户端与服务器端之间的通信,所以调试更加容易了。查询结构与服务器端返回的数据结构完全匹配,因此,相比其他语言,如 SQL 或 Gremlin,GraphQL 更加高效。查询本身就反映了响应消息的结构,所以可以很容易地检测出差异,如果没有正确处理某些字段也可以很容易识别出来。因为查询更简单了,整个流程也变得更稳定。虽然说 GraphQL 规范主打支持外部 API,但我们发现将它用在内部 API 中也很不错。

GraphQL 的用户包括 Amplitude、Credit Karma、KLM、纽约时报、Twitch、Yelp 等。去年 11 月,亚马逊推出的 AppSync 就提供了 GraphQL 支持,可见它有多么流行。在存在 gRPC 和 Twitch Twirp 这些 RPC 框架的前提下,看着 GraphQL 的发展真是一件有趣的事情。

5. 混沌工程浮出水面

混沌工程最初由 Netflix 发起,后来亚马逊、谷歌、微软和 Facebook 也开始实践。混沌工程的目的在于改进系统的确定性,以便应对生产环境的各种问题。混沌工程经历了十年的发展。最初,Netflix 开发了 Chaos Monkeys,用它在生产环境关闭部分服务,后来演变成故障注入测试和 Chaos Kong,用在更大规模的环境中。

从表面上看,混沌工程只是为了向系统注入混乱。尽管通过破坏系统来发现问题是件有趣的事情,但这样做并不一定会带来生产力的提升或者给我们提供有用的信息。实际上,混沌工程不只是注入故障那么简单,它还可以制造流量高峰、非正常的请求等,用以发现已经存在的问题。除了可以用它验证假设,还可用它来发现系统的新属性。通过发现系统弱点来改进系统弹性,以免造成糟糕的用户体验。

混沌工程通过对系统进行全面的测试来改善稳定性。随着工程师们在提升系统健壮性方面所做的工作越来越多,混沌工程似乎会变得越来越为人们所接受。

随着混沌工程成为主流,它可能会以开源项目的形式、商业的形式甚至是服务网格的形式来实现。

转载于:https://www.cnblogs.com/dadadechengzi/p/9395347.html

2018年5大微服务发展趋势相关推荐

  1. 2019年最值得关注的五大微服务发展趋势

    戳蓝字"CSDN云计算"关注我们哦! 译文 | Andy 本文转载自公众号:Docker 2018年对于DevOps社区来说无疑是重要的一年.Kubernetes成为第一个从云原生 ...

  2. 两大微服务框架dubbo和spring cloud对比

    一.基本介绍 dubbo Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案.简单的说,Dubbo 就是个服务框架,说白了就是个远程服务 ...

  3. 打造业界最牛微服务,网易云这两位“大神”获了大奖

    2018年以来,"微服务"受到业界越来越多的关注,也取得了很多发展.其中网易云轻舟微服务因其为企业带来的突出价值和打造了业界最全面的微服务平台,荣获"2018年度中国IT ...

  4. 身为程序员,就应该了解微服务的未来发展趋势:云原生应用架构

    微服务发展趋势 随着Docker技术的普及和Kubernetes在互联网公司的大量部署与使用,微服务架构正在围绕应用如何易于开发交付.减少资源消耗.无侵入治理等方面进行变革和演进. 本篇我们将讲解云原 ...

  5. 恕我直言,你可能误解了微服务

    刘超,网易云计算首席架构师,有10多年的云计算架构与开发经历,积累了丰富的企业级应用的微服务化,容器化实战经验.刘超将担任今年 5 月份 QCon 全球软件开发大会广州站「微服务实战」专题的出品人,为 ...

  6. 网易云轻舟微服务深度解读:基于开源,强于开源

    近日,由杭州市政府.赛迪以及网易主办的"2018中国杭州云创大会"于杭州国际博览中心如期举办,大会以"开放·生态·赋能"为主题,汇聚行业领袖.技术大咖及产业链从 ...

  7. 公司转型微服务,真的有必要吗?

    戳蓝字"CSDN云计算"关注我们哦! 作者:谦镒 转自:架构师技术联盟   现在,在互联网圈子里,不知道何时微服务这个概念已经深入到了我们圈内的各个角落,似乎如果不赶上这个潮流,公 ...

  8. 再次登顶GitHub,阿里内网首次自曝炫彩版微服务响应式与K8S手册

    "物之所至者,志亦至焉;志之所至者,礼亦至焉;礼之所至者,乐亦至焉:乐之所至者,哀亦至焉." 微服务是当前软件开发的发展趋势,越来越多的系统采用微服务方式构建.而今天团长分享的这份 ...

  9. 25岁阿里120W年薪架构师推荐学习的750页微服务架构深度解析文档

    前言 当前,微服务架构在国内正处于蓬勃发展的阶段,无论是大型互联网公司还是传统的IT企业,纷纷采用微服务架构构建系统. 在过去几年里,DevOps.云原生.面向演进式架构等理念已经深入人心,围绕微服务 ...

最新文章

  1. 科学计算工具NumPy(2):ndarray的矩阵处理
  2. c语言strcat_s用于调用的参数太少_为什么系统调用会消耗较多资源呢
  3. mac下dashboard小控件开发实例(附源码)
  4. python怎么导入opencv_对python opencv 添加文字 cv2.putText 的各参数介绍
  5. mock测试使用断言_使用自定义断言丰富测试代码
  6. 工作198:无法选中的状态一定要绑定在select上面
  7. CSS进阶(十)position:relative
  8. keil5按F12调不出头文件中函数
  9. Sql Server 语句集合
  10. 947. 移除最多的同行或同列石头2021-01-23
  11. [JSOI2008]最大数maxnumber
  12. oracle导出数据带where,CSS_指定一个where条件来有条件地导出记录,在Oracle数据库中,exp中的query - phpStudy...
  13. 风险模型 - 变量筛选
  14. 武汉linux软件,Linux发行版Mandriva的安装与软件包
  15. 百度地图使用之基本功能
  16. Parrot OS 4.6渗透测试系统安装与基础环境搭建
  17. 如何将录音m4a转换为mp3格式?
  18. 小程序云开发学习笔记(二)
  19. 《风投出50万买断她网站广告位却被拒绝》
  20. 苹果 谷歌 微软 三国混战 附地图详解

热门文章

  1. LADRC的学习——用simulink搭建仿真模型
  2. as导入项目没有gradle文件夹_【Studio】导入其他项目卡死
  3. MySql数据库下载和安装
  4. TensorFlow-Serving的使用实战案例笔记(tf=1.4)
  5. 安装LoadRunner 11时弹窗提示Micosoft Visual C++ 2005 SP1 可再发行组件包(X86):'命令行选项语法错误。键入命令 / ? 可获得帮助信息'。
  6. 如何使用CHM 绕过Device guard
  7. 京东金融创新”ABS云平台” 大数据提升直接融资效率
  8. SQL SERVER 2012 只能识别20个CPU的问题
  9. 链表相关的面试题型总结
  10. 全局唯一序号生成方案