听说你想搞微服务?
啥微服务?
这两年大家都在说微服务,大厂早就开始入坑。小厂也想提升一下B格,如果你还没入坑的话,咱们来算算提升B格的代价。
啥代价?
1.基础服务:
RPC框架:1个。远程调用、负载均衡、故障转移、异常处理
监控系统:1个。服务存活监控、资源占用、报警通知
发布系统:1个。多节点/多环境发布
2.编码代价:
不能简单使用普通数据库事务。替代品可以使用分布式事务或者补偿机制(好像用的多一点)。
有数据写操作的服务需要做幂等(多次调用和一次调用的结果一致)。耗时长的操作可能会因为网络超时造成客户端拿到未知结果,不做幂等服务调用方重试可能会业务错乱。
调用状态修改的服务时,如果接收到异常,当前的状态应该认为是未知,需要隔段时间后主动查询(然后根据业务走补偿机制)。
一段吐槽
上面要求的基础服务都不是一两个月就能搞定的。能写出来也不见得线上不出问题。微服务的部署节点和环境比较复杂,单个项目还能看的清楚点,如果多个项目交叉部署,简直不能看。没有一套完整的系统真的非常浪费时间!功能模块被网络拆分的零零散散,服务器越多,运维的压力越大,不把运维自动化就别想早下班了。
如果你和我一样是个码农,可能更关注编码代价,项目变成微服务结构的时候,调用其他服务的地方,需要有好多try-catch。事务回滚也不能随心所欲,你看到的是异常,但是可能操作是成功的,项目的内部模块对你来说像是外部系统一样不可信,只有明确接收到返回的结果才能认为是调用成功。
后,安利一下自家的 mrpc @王爵nice 。
以上。然后,谢谢你长这么好看还来看我文章。
相关文章