企业IT基础架构的重新平台化是不小的任务,重新平台化通常是由一组不断变化的关键业务驱动因素引发的,简而言之,就是目前支持企业业务的平台不能再处理和推动业务发展所需的工作负载。
数字化转型的核心是数据,数据已经成为商业中最有价值的货币。由于格式不兼容、传统数据库的局限性以及无法灵活地合并来自多个来源的数据,企业长期以来一直受到其使用数据的困扰,而新技术则可以解决这一困境。
改善软件部署模式是消除数据使用障碍的一个主要方面,更高的“数据灵活性”是需要更灵活的数据库和更具可扩展性的实时流式传输平台。目前想要为企业提供灵活的实时“数据结构”需要至少七种基础技术的相互结合。
与原先技术不同,这七种技术能够扩展以满足很多用户和用例的需求,对于企业而言,能够实现更快、更明智的决策并创造更好的用户体验。
1. NoSQL数据库
RDBMS在数据库市场上占据了近30年的主导地位。但是,面对数据量的不断增长以及数据处理速度的加快,传统关系数据库已经显示出不足。NoSQL数据库由于其速度和扩展能力而渐渐崭露头角。就文档数据库而言,从软件工程的角度提供了一个更简单的模型。这种更简单的开发模式可加快产品上市速度,并帮助企业更快响应客户和内部用户的需求。
2.实时流媒体平台
实时响应客户对客户体验至关重要。在过去的10年中,面向消费者的行业经历了巨大的破坏,这与公司对用户实时作出反应的能力不无关系。
消息驱动的应用程序已存在多年,但流媒体平台的规模要远远好于前者,而且成本要低得多。流媒体技术的进步为许多优化业务的新方式打开了大门。流媒体平台不仅要实时响应客户,还要为软件开发和测试团队提供实时反馈回路,事件流还可以帮助公司提高产品质量、更快地获得新的软件。
3.Docker和容器
容器对开发人员、操作人员以及企业本身都有很大的好处。传统的基础设施隔离方法是静态分区,即为每个工作负载分配一个单独的固定资源片段(无论是物理服务器还是虚拟机)。静态分区更容易排除故障,但是不能充分利用硬件,导致成本较高,交付实质性未充分利用的硬件成本很高,例如,Web服务器平均只消耗可用总计算量的10%。
容器技术的巨大优势在于其创造了新型隔离的能力。不了解容器的人可能会认为他们通过使用Ansible,Puppet或Chef等工具也可以获得同样的效果,但事实上这些技术具有很强的互补性。
此外,无论你如何尝试,这些自动化工具都无法创建在不同基础架构和硬件设置之间自由移动工作负载所需的隔离。同一个容器可以在本地数据中心的裸机硬件上或公共云中的虚拟机上运行,无需进行任何更改,这才是真正的工作负载移动。
4.容器存储库
容器存储库对于敏捷性至关重要,如果没有用于构建容器映像的devops进程以及用于存储它们的回购站,那么每个容器都必须在该容器可以运行的机器上构建。通过存储库,可以在配置为从该存储库读取的任何计算机上启动容器映像。
在处理多个数据中心时,情况会变得更加复杂。如果在一个数据中心内建立一个容器图像,那么如何将图像移动到另一个数据中心?理想情况下,通过利用融合数据平台,可以在数据中心之间对存储库进行镜像。这里的一个关键细节是,内部部署和云之间的镜像功能可能与原先内部部署数据中心之间的镜像功能大不相同。
5.容器编排
不是静态硬件分区,每个容器看起来都是它自己的私有操作系统。与虚拟机不同,容器不需要计算和内存的静态分区,管理员能够在服务器上启动大量容器,而无需担心内存量。有了像Kubernetes这样的容器编排工具,启动、终止和移动容器,甚至是在其它重新启动容器都会变得非常容易。
添加了新的基础设施组件之后(例如MapR-DB或MongoDB等文档数据库),容器中很多东西的部署问题就需要我们考虑了,例如,MapR-ES或Apache Kafka之类的事件流式传输平台、Kubernetes之类的编排工具以及实施用于构建和部署软件的DevOps流程。这就引出了我们第六个要讲的技术——微服务。
6.微服务
从历史上看,微服务的概念并不新鲜,但是今天的不同之处是在于启用技术(NoSQL数据库,事件流,容器编排)可以随着数千个微服务的创建而扩展。如果没有数据存储、事件流和架构编排的新方法,大规模微服务部署将不可能实现,管理大量数据、事件和容器实例所需的基础架构将无法扩展到所需的级别。
微服务都是关于提供敏捷性,通常由一个功能或一小组功能组成。工作的功能单元越小且越集中,创建、测试和部署服务就越容易。这些服务必须解耦,否则就会失去敏捷性。
微服务可以依赖于其他服务,但通常是通过负载平衡的REST API或事件流。通过使用事件流,可以利用请求和响应主题轻松跟踪事件的历史记录。由于整个请求流和请求中的所有数据都可以在任何时间点重播,因此这种方法对故障排除具有重大益处。
由于微服务封装了一小部分工作,并且彼此分离,所以随着时间的推移,更换或升级服务几乎没有障碍。在旧模式下,依赖像RPC这样的紧密耦合就意味着必须关闭所有连接,才能重新建立,而负载均衡就成了一个大问题,手动配置非常容易出错。
7. Function as a service
微服务在行业中已占据了主导地位,因此无服务器计算也渐渐兴起。以FaaS方式创建微服务,代码可以包装在轻量级框架中,并内置于容器中按需执行,然后自动进行负载平衡。FaaS的优点在于能够使开发人员专注于功能。
触发事件是FaaS的关键组成部分。如果没有它,那么只有在完成工作的情况下,才能调用函数和消耗资源。功能的自动调用使得FaaS真正具有价值。想象一下,每当有人读取用户的配置文件时,都会有一个审计事件,一个必须运行以通知安全团队的功能。需要注意的是,使用像FaaS这样的部署模型来完成工作流程是非常简单的。
七剑合璧,天下无敌
触发服务的其实是事件流中的事件,虽然某些类型的事件会被普遍的用作触发器,但其实任何事件都可以作为触发器,例如将文档更新设置为触发事件,对新文档运行OCR过程,然后将OCR过程中的文本添加到NoSQL数据库。如果我们以更有趣的方式思考,每当上传图像时,都可以通过机器学习框架进行图像识别和评分,定义一个函数,该事件触发该函数,并且函数完成其工作。
FaaS将成为采用微服务的下个阶段。但是使用FaaS时要考虑一个问题,那就是供应商锁定。FaaS隐藏了特定的存储机制、特定的硬件基础架构和编排,这对开发人员来说都是伟大的事情。但也由于这种抽象,托管的FaaS产品是行业有史以来最大的供应商锁定机会之一。由于这些API不是标准化的,所以从公有云提供的FaaS迁移而无需放弃已经执行的近100%工作,几乎是不可能的。如果FaaS采用一种更有系统的方法,利用聚合数据平台中的事件,那么在云提供商之间移动就变得更容易了。
本文分享自微信公众号 - JAVA高级架构(gaojijiagou)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3999152/blog/4434686