在企业微服务话过程中,出现了很多有意思的冲突,比如:
- 关于权限控制,原来的企业总线,支持按接口配置权限,而微服务不行。
- 关于系统性能,原来单个请求的处理时间只需要10毫秒以内,微服务化后达到了20毫秒。
对此,我经常需要做如下解释:
微服务的思想:
微服务是个分布式的服务系统,通过大量分散的服务来提高可用性,不能严格按照传统的系统设计思想来对照微服务的思想。
-
权限控制
传统的系统是一个很大的程序,提供很多接口,需要按接口控制权限才行。如果按服务级别控制,那么传统的系统可以认为就是一个服务,相当于没有权限控制。
微服务化以后,一个服务只具有少量的接口,可以按服务进行权限控制。
当然,如果需要做到按接口级别的权限控制,技术上也是可以的,只是很多情况下不需要这么做。 -
系统性能。
微服务化后,一个调用链有很多个服务,经过多次网络请求,光网络请求的时间就会增加很多,所以单个请求的时间会更长。但是,大规模并发时,由于微服务的分散性和可扩展性,整体性能不会明显下降。所以不能按单个请求的时间来考察微服务系统的性能,而应该按高并发时的平均时间来考虑性能。
我们举个例子:假设传统架构下,单个请求耗时10毫秒,但是当大规模并发时,响应时间会大幅增加,且难以方便的扩容。当每秒请求达到10万时,平均耗时可能达到1秒。而微服务架构下,由于可以方便的扩容,所以高并发时平均耗时可能也就50毫秒,远远优于传统架构。
所以,我们考察微服务系统的性能,更应该关注大规模并发时的响应时间。