作为一个步入职场一年半的“老鸟”。分享一下自己的心得。
大道至简-化繁为简看了那么多书,用过那么多框架,也做过技术选型,技术架构。学过那么多的新知识。
其实也就这么几件事:
- 通信。服务与服务之间的调用叫做通信。用户调用服务也叫做通信。高可用集群,集群与集群之间数据同步,也需要通信。想要走得更远,进行更多的优化。最好熟悉网络原理,以及通信协议。另外前辈给我们封装好了一些东西,例如通信框架netty,最好学习一下。
- 微服务。也就是服务拆分。
- 以及服务拆分带来的单点故障问题如何解决。也就是高可用。
- 用户量堆起来以后,如何解决并发问题。
- 大规模下,更应该充分了解计算机组成原理,操作系统运行原理。充分发挥集群的资源,或者说充分挤压每一台服务器的价值。
- 这包括了如何发挥全部的带宽优势; 这一样要去了解网络原理。
- 如何发挥全部的CPU的作用,如何合理的运用线程。这最好能够知道计算机组成原理,运作原理,操作系统如何去调度的。
- 如何把IO做到最好。
- 必要的一些理论基础,例如base CAP
- 读写分离的思想。这方面一般数据库服务多一点。另外最好了解一下,数据库技术,为了优化读写性能,是如何基于操作系统已经计算机的组成做出适当的优化的。这给我们做系统,做开源框架,提供了一些很好的案例。
- 集群的主从架构。这个和上边第七点有联系。读写分离是也是一种主从架构,这一般要用到通道技术,来做到集群间的数据同步。
- 分布式系统。有哪些好的案例。这里我非常推荐的是elasticsearch这项技术,elasticsearch即是一个搜索引擎技术,又是一个非常非常出色的分布式把集群发挥到极致的一个产品。学一下背后的原理。对我们是有非常大的帮助的。
- 编程思想,代码结构。这个非常建议去看一下优秀开源框架的源码。例如spring的源码,把面向对象,面向接口编程,完全遵循设计原则,大量使用设计模式。会很大程度上影响我们。
如果上边能都掌握,离写出一个出色的框架,根据业务定制化一个框架,或者在出的框架上做出一些扩展,甚至是性能方面的优化都不远了!