架构,为什么要做服务化?
“微服务架构”的话题非常之火,很多朋友都在小窗我,说怎么做服务化?解答“怎么做”之前,先得了解“为什么做”。 画外音:做技术千万不能是这种思路,“别人都在做,所以我们也要搞”。 并不是所有的业务都适合“服务化”,互联网高可用架构,到底为什么要服务化? 服务化之前,高可用架构是什么样的? 在服务化之前,互联网的典型高可用架构如下: (1) 客户端 ,APP,H5,小程序,PC浏览器; (2) 后端入口 ,高可用的反向代理nginx集群; (3) 站点应用 ,高可用的web-server集群; (4) 后端存储 ,高可用db集群; 更典型的,web-server集群通过DAO/ORM等技术来访问数据库。 可以看到,最初是没有服务层的, 此时架构会碰到什么典型痛点呢? 架构痛点一:代码到处拷贝 举一个最常见的业务例子,用户数据访问,绝大部分公司都有一个数据库存储用户数据,各个业务都有访问用户数据的需求。 在有用户服务之前,各个业务线都是自己通过DAO写SQL访问user库来存取用户数据,这无形中就导致了代码的拷贝。 架构痛点二:复杂性扩散 随着并发量的越来越高,用户数据的访问数据库成了瓶颈,需要加入缓存来降低数据库的读压力,于是架构中引入了缓存,如果没有统一的服务层,各个业务线都需要关注缓存的引入导致的复杂性。 对于写请求,所有业务线都要升级代码: (1)先淘汰cache; (2