微服务设计:分解单块系统

限界上下文就是一个非常好的接缝,因为它的定义就是组织内高内聚和低耦合的边界。
数据库是所有杂乱依赖的源头
打破外键关系,把外键约束从数据库转移到代码中实现。这也就意味着,我们可能需要实现跨服务的一致性检查,或者周期性触发清理数据的任务。
表结构分离后,对于原先的某个动作而言,对数据库的访问次数可能会变多。因为以前简单地用一个SELECT语句就能得到所有的数据,现在则需要分别从不同的地方拿到数据,然后在内存中进行连接。还有,分成两个表结构会破坏事务完整性,这会对应用程序造成很大的影响。先分离数据库结构但不分离服务的好处在于,可以随时选择回退这些修改或是继续做,而不影响服务的任何消费者。我们对数据库分离感到满意之后,就可以考虑对整个应用程序的分离了。
事务是很有用的东西,它可以保证一些事件要么都发生,要么都不发生。在插入数据库时这一点非常有用,因为它允许我们对多个表同时进行修改,而且一旦发生任何错误,所有的操作都会被回退,从而保证数据库不会处于一个不一致的状态。一个事务可以帮助我们的系统从一个一致的状态迁移到另一个一致的状态:要么全部做完,要么什么都不变。
我们可以,也一定会犯错误,需要接受这个事实。但是另外一件我们应该做的事情是,理解如何降低这些错误所造成的影响。
posted @ 2023-07-01 18:37  wtzhang  阅读(7)  评论(0编辑  收藏  举报