spring cloud 微服务的确是好东西,能做很多很多事情,但微服务以进程的方式存在,多个微服务之间通过RPC互相调用则是牺牲了性能为代价,因此实时系统绝对不能够使用这种多进程,进程间通讯的微服务方式(频繁的网络IO就会消耗大量的CPU时间片,更不用说进程间通讯的RPC参数的列集和散集了)。
而且微服务进程无法共享数据库连接池,如果每个微服务都配置该微服务进程使用的数据库连接池的话则数据库的压力将会变得很大,而且数据库的连接资源将不会得到合理有效的利用(资源浪费型使用),如果将访问数据库的功能(包含业务逻辑的数据库存储过程,视图等)都用微服务实现一遍则又属于功能冗余,明明调一下数据库存储过程就可以可却还要调一个微服务,该微服务仅仅是为了调用数据库存储过程(功能浪费型使用)!
或许会有人这样设计:把所有的数据库访问的功能做在一个微服务里,作为整个系统的核心微服务供其它微服务调用,这样不是很好么?确实不错,但无论如何都是在数据库
前面又增加了一道门:每一次访问数据库的INPUT和OUTPUT都创建了两遍,同样属于资源冗余浪费类型的使用。
只有真正懂得才能正确使用,因地制宜是最重要的。
spring cloud 微服务之殇
最新推荐文章于 2023-09-02 13:26:51 发布