林林总总说了这么多的微服务架构相关的知识也好,经验也罢,不一定适合每个希望做微服务系统的技术人员的实际需求。“道无常道,法无常法,君子审时度势,自可得而法”。实际项目里需要做哪些工作,采取哪些策略,先后运用哪些步骤,都需要因地制宜,借鉴各种“他山之石”,综合考虑。
微服务架构的最佳实践,其实就是把微服务架构的条条框框都思考一遍,这一条到底解决了什么问题,适用于什么场景,对我现在的工作有没有帮助,考虑清楚了以后彻底的忘掉这些“有为法”。然后用自己的思考成果去解决工作中遇到的各类问题,就算是真正学会了微服务。问题永远存在,解决掉遇到的问题,是推动技术发展,促进组织进步,提升个人技术能力的不二法门。
过去的几十年里,技术发展的越来越丰富,体系越来越庞大,业务系统越来越复杂,正像是《人月神话》中形容的那样:
“史前史中,没有别的场景比巨兽们在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越猛烈,焦油纠缠得就越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。”
如何才能逃离“焦油坑”,目前看来使用“微服务架构”的指导思想,去解决复杂业务系统研发中的各类问题,是一个明确的解决办法。没有什么比去解决实际问题、让系统变好更重要。系统变好了,我们的技术也变好了,公司的业务也支持的更好了,业务好了则行业也发展的更好了,行业好了就会让整个国家和民族都更好了。所以,解决问题是关键。
万维钢老师在《精英日课》里说“这个世界上的问题,分为三类”:
第一类是目标明确、路径明确的,比如你上高中的时候,你知道把几门功课都学好,就能上个好大学,这就是一个单纯问题,但是可以看到,单纯问题也可能是非常难的。钱能直接解决的问题,一般也是这类问题。
第二类是两难问题,选择就意味着放弃,比如两个女孩喜欢你,一个有钱,一个漂亮,选了有钱的就不漂亮,选了漂亮的就没有钱。路径很明确,但你面临的痛苦不是因为问题很难,而是不管你怎么处理,都需要付出失去的代价,放弃潜在的另一些可能,会在将来造成实际的损失。你跟小张结了婚,10 年后天天吵架,后悔没有取晓丽,红玫瑰与白玫瑰。
第三类问题,我们叫棘手问题,这类问题,即可能没有特别明确的目标,而且也没有任何人能告诉你一个明确的路径,你现在做了什么努力,可能也短时间看不到效果,做好了不一定有很大成果,做不好肯定要背锅。大家可能都知道这个问题在,就是没有人去解决或者能去解决。最关键是,从外部的一些人看来,这些问题,很像是一个单纯问题。这特么就扯淡了。
而现在看来,微服务架构的这些知识和实践,包括最近几年大家在响应式微服务架构(Reactive MicroServices Architecture)、服务网格(Service Mesh)做得一些工作,恰恰就是给怎么去处理“复杂业务系统研发”这个棘手问题,带来了一个比较明确的路径,指引着大家逐渐的把这个棘手问题变成一个单纯问题,然后用各种新的思想和武器去解决它。
最后给大家分享一个今天看到的微服务和中台的段子:
Q:大师大师,微服务拆多了怎么办? A:那就再合起来啊。 Q:那太没面子了啊。 A:你就说你已经跨越了微服务初级阶段,在做中台了。
《高可用可伸缩微服务架构:基于 Dubbo、Spring Cloud 和 ServiceMesh》,程超,梁桂钊,秦金卫,方志斌,张逸 ... 著,https://item.jd.com/12585284.html,https://msainaction.github.io
《软件架构发展历程分享》,kimmking,https://gitbook.cn/gitchat/activity/5a795024b939c9068a20dd37
《Microservices: a definition of this new architectural term》,James Lewis,Martin Fowler,https://martinfowler.com/articles/microservices.html
《Microservices Guide》,James Lewis,Martin Fowler,https://www.martinfowler.com/microservices/
《什么是微服务》,Chris Richardson,https://www.nginx.com/blog/introduction-to-microservices/
《什么是反应式微服务?》,Jonas Bonér, Co-Founder & CTO, Lightbend, Inc.,https://www.oreilly.com/ideas/what-is-a-reactive-microservice
《Reactive Microservices Architecture: Design Principles For Distributed Systems》,Jonas Bonér, Co-Founder & CTO, Lightbend, Inc.,https://www.lightbend.com/ebooks/reactive-microservices-architecture-design-principles-for-distributed-systems-oreilly
《使用聚合、事件溯源和 CQRS 开发事务型微服务(第一部分)》,Chris Richardson,https://www.infoq.cn/article/microservices-aggregates-events-cqrs-part-1-richardson
Peter Lawyer 博客,https://vanilla-java.github.io
微服务性能,Peter Lawyer,https://vanilla-java.github.io/2016/03/22/Micro-services-for-performance.html
《著名的推特论战:Microservices vs. Monolithic》,TodHoff,https://www.csdn.net/article/2014-08-06/2821078
《微服务设计》,Sam Newman,https://info.thoughtworks.com/Building-Microservices-Book-Sam-Newman-book-chapter-confirmation-page.html
Unix 哲学,https://en.wikipedia.org/wiki/Unix_philosophy
《管理的常识》,陈春花
《反应式设计模式》,Roland Kuhn、Brian Hanafee、Jamie Allen
《数据密集型应用系统设计》,Martin Kleppmann
分布式事务,张亮,https://shardingsphere.apache.org/document/current/cn/features/transaction/
Apache ShardingSphere,张亮,https://shardingsphere.apache.org
应该如何理解 Erlang 的「任其崩溃」思想?,程墨 Morgan,https://www.zhihu.com/question/21325941/answer/173370966
分布式事务的原理综述,https://mp.weixin.qq.com/s/sy PKHc km6uZ3TgJYfRnw
分布式事务解决方案与适用场景分析,https://mp.weixin.qq.com/s/Okvgn5beGy5aJypfu6mKcg
漫谈分布式事务,长源,https://zhuanlan.zhihu.com/distributedDatabase
分布式事务,张亮,https://shardingsphere.apache.org/document/current/cn/features/transaction/
Kubernetes(k8s)Pod 弹性伸缩详解与使用,https://www.centos.bz/2017/07/kubernetes-k8s-pod/
Horizontal Pod Autoscaler,https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
自动化运维时代,我们该如何是好?,https://www.jianshu.com/p/fc32735105cf
如何理解持续集成、持续交付、持续部署?,https://www.zhihu.com/question/23444990
分享一种系统事故&问题处理反馈方式(COE),buguge,https://www.cnblogs.com/buguge/p/7028524.html