工做中一些原则体会

尽量让一切变得简单,用最简单的方式完成工做

能用最少的概念,最精简易懂的概念模型来抽象系统,多一个概念就多一份别人了解系统以及维护系统的复杂度,别人也会质疑多一个概念的意义所在,本身若是没想清楚就容易被diss。web

特别是在类的设计中,会发现其实不少时候用一个类就能够表达要干的单一职责了,每一个类职责清晰,类于类之间关系易于理解及维护。编程

设计系统时某些功能只在须要它时构建

对于这点深有体会, 特别是在对设计此类系统没有业务经验的时候,不要尝试第一次就构建一个所谓“完美”系统,系统是要面向迭代的,永远都是随时准备修改或增长功能,因此设计系统的目标不在于追求一次性构建完美全面的功能,而在于追求系统对功能支持的扩展性,是否能具备快速cover新业务需求,从而分秒迭代自身的能力。后端

而且业务是多变的,设计时知足好当前的功能需求,并预留扩展点,即便目前功能不完备,也能在将来快速构建它。机器学习

不必过分设计,特别是在自身经验不丰富的状况下,意淫的美好都是太自我,虽然多思考勇于尝试是好事情,但仍是要找高手明确好要作的事情,不然对开发人力的浪费。开发暂时不须要的功能会致使最“重要且紧急”的需求delay或bug风险异步

敏捷迭代思惟

先学会爬,而后再学会走,最后学会跑。换句话说,先保证可以正常运行,而后优化它使其更好,最后逐渐让它变得完美。为每一个功能制定一个开发周期(最多2周),而后不断迭代。编程语言

注重投资回报率

工做中会发现任务都是排着队的,至于任务队列的 compare方法怎么写,对于事情的四象限法则,事情的投资回报率是评估是否重要的重要考量。分布式

功能的设计和测试尽量独立。若是在设计时考虑到这一点,长远来看,它将省去不少麻烦,不然只有一切构建完成时你才能够开始测试整个系统。不少时候直到要测试某个功能的时候,才发现代码相互依赖,而没法独立测试某模块。微服务

推行MVP(最小可行产品)

该理念的核心在于:先制定一些用例,完成用例所涉及的相关功能,当即发布产品,而后根据反馈和经验对产品进行优化。工具

在需求评审阶段尽量明确要作的事情,知悉pm需求的业务意义,才能更好更明确的带着目标作事情,技术评审阶段,尽可能想清楚需求边界及所需的技术和业务资源来评估好开发时间,并乘以一个系数做为交付时间(主要是为后期忽然插入的事情留buffer),从项目生命周期开始,直到上线期间,和相关人员常常进行 关键步骤同步和确认,你们不会每天盯着你在作的事情,要主动同步进度,寻求反馈,能够避免方向走偏,同时方便对于领导也能掌控全局信息。学习

在多人协做过程当中,流程规范化的意义,好比结论文档化,分支管理按照契约。你们都有了common sense,办公效率也是极大提升。

试想微服务系统节点较少,俩人协做的时候,信息的沟通等价于最简单的的Pub/Sub模型,信息的传递较为简单,你们都会把对方同步给本身的事情处理好,甚至还闲着没事儿催促你好几遍,由于每一个人只订阅对方的消息,来源单一,处理起来不会遗忘。后来的后来系统复杂了(同事多了),你做为生产者有了好多个消费者同事,好比你要改一个接口,涉及到好几个其余模块开发者,你推进此次升级须要每阶段都push各方同事这时候有个问题:

除了其它端,发现 支付端 也须要升级你的接口,而后屁颠屁颠跑人家那又巴拉巴拉描述如何升级——每一个消费者接入,都须要生产者开发适配新消费者的消息发送代码。

学会解耦

别忘了工做中你自己做为生产者同时也在订阅别人,总之你做为一个节点,你的全部peer消息你都要处理,消息量大还处理不过来,容易遗漏。要么是push消息,要么是处理别人的消息,对于push别人的消息,你还要作好“降级”,由于你告诉别人这样作了,你确保不了别人必定按你说的作,消息一多这个时候人脑子会很容易乱的,别人若是作错了,若是不认可你给他push过消息怎么办?你要背锅嘛。。。

怎么办呢? 引入业务消息中间件~

因此人多了就得学会解耦,每一个模块都有人专门负责,模块间的沟通工做,须要一种协议来确保沟通准确性和解耦,上面说的是典型的同步rpc协议,意味着你要了解全部的消费者,还要处理新来的消费者,没有消息落盘,不可追溯。若是这个时候有一些文档或消息群来承载结论性的消息变动,你们都只须要跟踪这个文档或这个群就能够了,生产者就往里push消息,剩下的分布式消息处理一致性让别人来保证就能够了,哪一端没处理好,怪不了你了可。

首先不用处理对别方的降级,都按文档约定的来的,也同步给你了,对于新的消费者接入,看文档就行了。 每一个人就只须要push消息到文档落盘,订阅别人的文档watch变动,大量消息落盘,我的能够异步消费,而不会丢消息,落盘的消息可重复消费,可记录历史,避免沟通的扯皮,确保研发环节的有条不紊。当系统更大的时候,每一个人工做消息模式复杂度保持不变,这也是 消息中间件 消息消峰 解耦的意义。

还没关注个人公众号?

  • 扫文末二维码关注公众号【小强的进阶之路】可领取以下:
  • 学习资料: 1T视频教程:涵盖Javaweb先后端教学视频、机器学习/人工智能教学视频、Linux系统教程视频、雅思考试视频教程;
  • 100多本书:包含C/C++、Java、Python三门编程语言的经典必看图书、LeetCode题解大全;
  • 软件工具:几乎包括你在编程道路上的可能会用到的大部分软件;
  • 项目源码:20个JavaWeb项目源码。
    小强的进阶之路二维码
相关文章
相关标签/搜索