购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 微服务架构的优点与挑战

相对单体应用架构来说,微服务架构有着显著的优点。但是,微服务并非是完美的,使用微服务也为我们的工作带来了一定的挑战。先来分析一下使用微服务有哪些优点。

1.4.1 微服务架构的优点

微服务架构有如下优点。

●易于开发和维护:一个微服务只会关注一个特定的业务功能,所以它业务清晰、代码量较少。开发和维护单个微服务相对简单。而整个应用是由若干个微服务构建而成的,所以整个应用也会被维持在一个可控状态。

●单个微服务启动较快:单个微服务代码量较少,所以启动会比较快。

●局部修改容易部署:单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。

●技术栈不受限:在微服务架构中,可以结合项目业务及团队的特点,合理地选择技术栈。例如某些服务可使用关系型数据库MySQL;某些微服务有图形计算的需求,可以使用Neo4j;甚至可根据需要,部分微服务使用Java开发,部分微服务使用Node.js开发。

●按需伸缩:可根据需求,实现细粒度的扩展。例如,系统中的某个微服务遇到了瓶颈,可以结合这个微服务的业务特点,增加内存、升级CPU或者是增加节点。

综上所述,单体应用架构的缺点,恰恰是微服务的优点,而这些优点使得微服务看起来简直非常完美。然而完美的东西并不存在,就像银弹不存在一样。下面来讨论使用微服务会带来哪些挑战。

1.4.2 微服务架构面临的挑战

微服务虽然有很多吸引人的地方,但它并不是免费的午餐,使用它是有代价的。本节将讨论使用微服务架构面临的挑战。

●运维要求较高:更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的正常运行。而在微服务中,需要保证几十甚至几百个服务的正常运行与协作,这给运维带来了很大的挑战。

●分布式固有的复杂性:使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都会带来巨大的挑战。

●接口调整成本高:微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有使用了该接口的微服务都需要做调整。

●重复劳动:很多服务可能都会使用到相同的功能,而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,从而导致代码重复。尽管可以使用共享库来解决这个问题(例如可以将这个功能封装成公共组件,需要该功能的微服务引用该组件),但共享库在多语言环境下就不一定行得通了。 t9wj6C3ueVfdYQwg6QyVzY/kOElP9jcb8CDng56veIIgx1P7y7u4ynZegOzwVX+N

点击中间区域
呼出菜单
上一章
目录
下一章
×