什么是微服务?它的优势和劣势?

一个大型的复杂项目,由一个或 多个小型服务组成。系统中的各个小型服务可被独立部署,各个小型服务之间是松耦合的, 并且这些小型服务之间以轻量级的通信协作(http)作为基础进行通信,这样的微服务器架构 独立性更强、粒度更细、性能更高、安全性、可扩展性、可重用性都更高。

简单来说:微服务,就是一个项目可以由多个小型服务构成,这里的小型服务就称之为微服务

优势

1.将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。

2.微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源。这是因为它们通过扩展组件来处理功能瓶颈问题。这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代。

3.微服务应用程序的另一个好处是,它们更快且更容易更新。当开发者对一个传统的单体应用程序进行变更时,他们必须做详细的QA测试,以确保变更不会影响其他特性或功能。但有了微服务,开发者可以更新应用程序的单个组件,而不会影响其他的部分。

 

缺点

1.整体复杂度更高,微服务根本上说是一个分布式系统。开发者需要选择和实现基于消息或者 RPC 的进程间通信机制。虽然这个有很多框架可供选择,并不需要从头实现。但是整体上的代码复杂度是提高了。

2.微服务架构上每个业务有自己的数据库。以前在单体应用中很好解决的事务问题,现在变得很困难。在基于微服务的应用程序中,需要更新不同服务所用的数据库,需要使用最终一致性的方法,这对于开发人员来说更具挑战性。

3.测试微服务应用程序也很复杂。一个类似的测试类对于微服务来说需要启动该服务及其所依赖的所有服务