前言
微服务在IT圈成了一个很热的词,甚至有的开发团队在初始阶段就直接将系统打造成微服务体系。微服务究竟是什么呢?
微服务从字面理解就是一个个微小的服务组成的体系,我们今天从软件系统的发展变迁开始来聊聊微服务的前世今生,看看我们是否需要微服务。
软件系统的发展变迁
在上世纪五十年代,诞生了人类第一台计算机,人们只能依靠纸带打孔输入的方式让计算机做简单的运算。可以说这算是一个微服务了,这是中国古代就有的算盘都能够做到的事情。正是那个时候,一只虫子的出现让Bug这个词有了新的含义。
人类不会就此满足,希望计算机能够代替人类完成更多的工作。从最早的图灵机理论到约翰·冯·诺依曼计算机架构,计算机理论体系同摩尔定律加身的硬件发展不断推动计算机从原来的庞然大物变成如今轻薄的个人笔记本电脑。
光靠计算机的发展还不够,Internet的出现真正让IT技术得到飞速的发展,在那时人们开始期待通过网络获取内容,了解外面的世界。上世纪90年代初HTML诞生了,成为了资源处理共享的标准化协议。
随着电脑小型化,越来越多的用户开始使用搜索引擎,人们对内容的展现也有了更高的要求,比如传输效率,页面样式等等。2000年左右的时候AJAX使得互联网页面实现了局部刷新,再到后来B端和S端的通信可以仅仅是传输文本数据。
2007年随着iPhone的推出,移动互联网浪潮正式拉开序幕,互联网用户激增,各种应用场景被挖掘出来满足用户的需求。社交,购物,娱乐等方方面面都离不开网络应用,7 * 24的稳定服务,能够抗住高并发的压力成为了软件开发团队需要思考的问题。如今已经是内容为王,流量为王的时代,快速满足用户需求也使得我们对软件开发团队的效率要求越来越高。
软件开发再不能采取瀑布式开发模型了,产品迭代的速度也在加快以应对需求变化。面对越来越多的需求,拆分模块,分解任务成为了必须要做的事情。为了高可用,就必须将单体应用拆分才能保证应用升级时不会影响用户使用。以下是微服务结构图。
为用户提供好的体验,满足用户的需求是一贯的宗旨,实现具体的业务一直是软件系统发展的主线。当然啦,任何事物都有优缺点,微服务也不例外,我们还是要结合自身情况考虑是否使用微服务。
适合自己的才是最好的
与单体应用相比,微服务的运维和测试难度更高。不论是监控还是发布更新都是令人头疼的事情,好在Docker等容器化技术的出现让我们有机会让微服务变得简单,也正是因为容器化技术的出现,让微服务变得流行。
实际上,早在2006年,CNCF(云原生服务计算基金会)就开始着手为微服务铺路架桥。负责容器编排的Kubernetes,负责监控的Prometheus等等一系列的开源产品都是微服务的好帮手。
可以看出,一方面,我们要面对复杂需求场景下软件开发成本上升的压力,另一方面还要考虑引入微服务之后要通过一系列工具解决因微服务带来的维护测试难度提升的问题。没有一个“金锤子”能够敲定一条不变的界限让我们做出选择。
如果是开发全新的应用,有的人认为应该一开始就使用微服务体系,而其他人则认为应该从单体应用开始做到一定规模后再引入微服务比较好。对于传统的应用是否有必要拆分成微服务,也要依应用自身因素决定,只能说参考微服务发展动向选择适合自己的才是最好的。
掌握微服务最新动向
作为开发者,我们都对新技术充满好奇,也希望自己的应用能够经得起挑战,时时刻刻掌握技术的最新动向是十分必要的。就微服务来说,我们可以只使用Kubernetes,也可以使用服务网格(Service Mesh)。每一种微服务技术都蕴含着设计者对微服务的思考以及自身的设计理念,这些内容会让我们得到启发。
网友评论