微服务架构强化的实时通信
一个强大的后端支撑可以产生更加动态、可扩展和易于管理的部署策略,它可以用于实时通信和协作。
前不久,这篇文章已经开始了一个关于微服务的盛大宣言:化整为零!分而治之!“......企业IT架构师知道该怎么做。尽管如今几乎没有必要了。事实上,大多数企业架构以低耦合、高内聚节点集群的模式来构建后端都是可能的。
但是这种灵活性是有代价的:企业级微服务架构很快变得高度复杂。负载均衡集群,到端点的路由请求,分布式消息编排,分片存储层以及设备并发读写访问等等都还只是其中的一部分挑战。
随着从请求-响应工作流到实时数据流的不断增长 -- 无论是金融价格分发,社交消息,协作应用还是物联网(IoT)数据聚合--我们都必须重新考虑我们的服务交互方式和资源共享。如果你负责实施和支持实时通信和协作,加强后端的支撑将有助于你创建更动态,可扩展和易于管理的部署策略。
传统微服务架构
解决方案需求概述
我们的核心挑战是降低复杂性并增强可扩展性。有一个解决方案可以同时解决这两个问题:一个强劲的骨干网,用于统一资源访问和权限并改善路由和内部服务通信。这还需要一系列关键的改变:- 数据同步替代分离的数据存储和消息传递——传统上,消息传递和数据存储是分离的。更新写入存储层;节点通过发布-订阅机制接收更新通知,然后使用自己的数据库连接查询新状态。这种方式伴随而来的是每个节点的额外连接和每次更新的多个步骤开销,进而导致更高的复杂性和性能的下降。
这种做法正逐渐被一种“数据同步”概念替代,诸如deepstream.io和RethinkDB的技术实现。数据同步将数据层建模为分布式状态。数据对象在微服务和客户端之间共享,并且可以被操纵和观察。对象的每个更改都会立即分发到所有连接的节点。 - 动态RPC替代静态路由表——在传统的REST架构中,远程过程调用(RPC)的可用端点是在路由器/负载均衡层静态配置的--许多企业级RPC框架,包括Apache Thrift 都是这种套路。这意味着更改或增加都必须同步多个配置并且通常需要重新启动/滚动更新。
高级消息队列协议(AMQP)代表如RabbitMQ或ZeroMQ,通过引入模式路由和动态交换创建带来巨大的改善。然而这些AMQP代理依然是让用户执行高级模式任务,如重新路由或基于度量的负载平衡。
新的RPC框架,如ZeroC's ICE或deepstream.io解决了这一问题。在这样的框架中,微服务在运行时可以动态分布式注册注册PRCs。传入的请求被路由到正确的端点并将响应返回给请求者。 智能负载平衡、重路由拒绝请求和其他额外功能使得这成为一个强大和少维护的方法。 - 服务间通信的发布/订阅消息传递——低耦合多对多通信的发布/订阅是一种可扩展和轻量级的内部消息传递模式。就像 Apache Kafka 的一个单独消息代理或像JBOSS Fuse企业事件总线一样。或者也可以融入统一平台的骨干网。
- 进入系统前的消息权限——在许多部署中,单独的微服务必须与Active Directory服务器或权限认证建立连接以确定给定的客户端是否可以执行特定操作。将消息权限移动到网关层,并确保消息不仅有效而且有权限,提高了安全性并且同时通过集中责任也降低了复杂性。这还有助于过滤掉恶意消息,在它们进入内部网络/虚拟私有云之前。
一个部署场景
向解决方案迈进
有不少的系统可以满足这些要求的方面,但真正的效果取决于他们结合的好不好。 RPC可用于预订系统的事务,并返回数据同步记录名称/流句柄以跟踪其状态。事件可用于在股票交易应用程序中快速广播指示价格更新,但最后通过数据同步提供最终价格。将所有这些功能从微服务和客户端连接到一个坚实、安全、可横向扩展的骨干网,能够显着降低复杂性,同时提高可扩展性和容错能力。原文链接:Microservice Architecture Fortified for Real-Time Communications (翻译:朱高校)
===========================================
译者介绍
朱高校,H3C公司,目前从事OpenStack 、Docker相关研究工作。
原文发布时间为:2016-10-31
本文作者:朱高校
本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。
原文标题:微服务架构强化的实时通信

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
构架高性能WEB网站的几点知识
前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题。 HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.htm或者.html 1.纯静态页面 当用户访问是,不需要经过服务器解析,直接就可以传送到客户端,此类型的页面,由于不需要解析就能直接访问,一般情况下,比动态页面的执行速度快。 2.静态化 页面静态化就是用动静结合的方式将动态网站生成静态网站来保存。这是实实在在的html文件,也就是静态页面。 3. 伪静态方法(Url静态化) 伪静态不是真正意义上的静态化,它只是利用某种方法将访问的路径也就是url地址转换成为.html为后缀的文件,但是实际上,文件本身还是以原来的后缀保存在服务器上。 HTML静态化的优点 一、减轻服务器负担。 二、有利于搜索引擎优化seo,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全; 三、加快页面打开速度,静态页面无需连接数据库打开速度较动态页面有明显提高; 四、HTML页面不会受程序相关漏洞的影响 PHP中的html静态化的模版 著名的sm...
- 下一篇
简化Kubernetes应用部署工具-Helm之Release配置
本文讲的是简化Kubernetes应用部署工具-Helm之Release配置【编者的话】微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的apt-get / yum,由Deis 公司发起,该公司已经被微软收购。Helm通过软件打包的形式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用部署和管理的复杂性。 随着业务容器化与向微服务架构转变,通过分解巨大的单体应用为多个服务的方式,分解了单体应用的复杂性,使每个微服务都可以独立部署和扩展,实现了敏捷开发和快速迭代和部署。但任何事情都有两面性,虽然微服务给我们带来了很多便利,但由于应用被拆分成多个组件,导致服务数量大幅增加,对于Kubernetest编排来说,每个组件有自己的资源文件,并且可以独立的部署与伸缩,这给采用Kubernetes做应用编排带来了诸多挑战: 管理、编辑与更新大量的K8s配置文件 部署一个含有大量配置文件的复杂K8s应用 分享和复用K8s配置和应用 参数化配置模...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- CentOS7安装Docker,走上虚拟化容器引擎之路