摘要:
切分系统。无论是单体应用还是微服务结构,都需要把系统分为若干模块。切分有两个维度。一是从职责上,比如UI、业务逻辑、数据库;二是从业务上,按用例切分。也就是Uncle Bob说的,把相同原因并且相同时间变化的放一起,把不同原因或者不同时间变化的分开。 确定模块间依赖。原则是高层不依赖细节,细节依赖高
阅读全文
posted @ 2018-03-06 15:49
邓志国
阅读(228)
推荐(0)
摘要:
在Clean Architecture里面,Uncle Bob说我们要把相同原因、相同时间变化的模块放一起,不同原因不同时间变化的分开。除了传统的UI、逻辑、数据库这样的纵向划分以外,还有以用例为单位的横向划分。不同的用例,用该拥有自己的UI、逻辑、数据库等操作单元。那么用例的粒度究竟应该怎么划分合
阅读全文
posted @ 2018-03-06 15:00
邓志国
阅读(370)
推荐(0)
摘要:
REST是(Representational State Transfer),面向的是数据,是对象 RPC是(Remote Procedure Call),面向的是过程,是业务。 简单来说REST比如会实现CURD,然后让调用者组合实现业务。而RPC本身的Call就是业务,你只是调用一个业务的子过程
阅读全文
posted @ 2018-03-03 21:04
邓志国
阅读(393)
推荐(0)
摘要:
经常洗澡,身体无异味,有狐臭尽快治疗。 保持口腔卫生,定期看牙医,口腔无异味。 没了
阅读全文
posted @ 2018-03-03 20:52
邓志国
阅读(97)
推荐(0)
摘要:
传统的技术经理,按我理解有如下职责: 在敏捷组织中,传统技术经理的一些职责消失了。代替为以下更职责: 而传统的计划、分配任务、检查任务从职责中消失。至于考核,我是不太喜欢的,至少目前的KPI考核之类的,我看不到任何有用之处。对于OKR考核,我没有实践过,不清楚是否有效。
阅读全文
posted @ 2018-03-03 20:16
邓志国
阅读(209)
推荐(0)
摘要:
在绝大部分团队里面,大家遵循的流程都是开发->测试->发布这样的过程。在开发完成后,交给测试进行集成测试,发现Bug后提交给开发,开发再修改这样直到缺陷都被修复。这样的过程导致一个问题:在一个Sprint中,必须留给测试足够的时间,否则会无法交付。而且测试在一开始会比较无所事事,而到了后期又特别忙。
阅读全文
posted @ 2018-03-03 20:04
邓志国
阅读(148)
推荐(0)
摘要:
当需求明确后,开始编程第一步是做什么? 多年前,我的第一步是设计表结构。当时流行的工具是PowerDesigner,一个表结构设计工具。直到现在,我看到很多架构师、或者是技术Leader,依然是采用这种方式。我们称之为围绕数据库编程。 后来出现了RUP,会画出用例图、时序图、类图设计图,这些图有利于
阅读全文
posted @ 2018-03-03 19:51
邓志国
阅读(312)
推荐(2)
摘要:
首先,什么是依赖反转,为什么叫反转? 高层不应该依赖细节,细节应该依赖高层。 什么是高层?什么是细节?对一个系统来说,业务逻辑是高层,其他是细节。业务逻辑是仅仅包括用例、业务实体部分,不包括任何框架、存储(数据库)、其他系统等部分,是纯粹的。其他细节,包括框架、数据库、消息队列,都是细节。业务逻辑应
阅读全文
posted @ 2018-02-27 09:21
邓志国
阅读(2180)
推荐(0)
摘要:
功能上,两者都是实现了AMQP协议。那么在使用上的最大区别是什么呢?如何根据自己的需求进行选型? kafka是严格顺序保证的消息队列。即使在分布式环境下,也保证在同一分区内消息的顺序性。既然是顺序的,那么在同一个Topic下面,如果前面的消息没有消费完毕(收到回应),则不能读取下一条消息。那么在消费
阅读全文
posted @ 2018-02-08 15:42
邓志国
阅读(16979)
推荐(0)
摘要:
在项目中遇到一个问题,在A服务中,连续两次远程调用B服务B1、B2,两次的服务中,都有对表C的Save操作。结果在一些情况下,后调用的B2服务没有成功,写入的结果是B1的。 经过仔细分析后,发现是在B服务有多台的情况下会发生。经分析,两台运行了B服务的机器,时间差了好几秒,怀疑是时间戳问题,在查了相
阅读全文
posted @ 2018-01-17 14:42
邓志国
阅读(289)
推荐(0)