2021-0609

84 阅读2分钟

256变4096:分库分表扩容如何实现平滑数据迁移?

四大热门NoSql(MongoDB,Hbase,ES,Redis)优劣及适用场景

image.png

HBase在滴滴出行的应用场景和最佳实践

DDD相关

问题层次 从里到外分别为以下几层,每层分别为内层的解决方案,是外层要解决的问题: Core Problem
核心解决,什么是企业要核心解决的问题,如:提高人才密度
Business Solution | Problem
业务解决方案,业务部门如何解决核心问题,如:HR 通过猎头渠道招聘人才
Product Solution | Problem
产品解决方案,产品如何满足业务部门的需求,如:招聘系统增加功能,使公司可以从猎头渠道进行招聘
System Solution | Problem
系统解决方案,研发如何实现产品方案,如:如何划分微服务,用什么架构与技术来实现猎头渠道招聘的功能
Organisation Solution | Problem
组织解决方案,如何划分研发组织与团队,如:划分为几个团队,来支撑功能的快速迭代

解决复杂和大规模软件的武器可以被粗略地归为三类:抽象、分治和知识。

分治 把问题空间分割为规模更小且易于处理的若干子问题。分割后的问题需要足够小,以便一个人单枪匹马就能够解决他们;其次,必须考虑如何将分割后的各个部分装配为整体。分割得越合理越易于理解,在装配成整体时,所需跟踪的细节也就越少。即更容易设计各部分的协作方式。评判什么是分治得好,即高内聚低耦合。

抽象 使用抽象能够精简问题空间,而且问题越小越容易理解。举个例子,从北京到上海出差,可以先理解为使用交通工具前往,但不需要一开始就想清楚到底是高铁还是飞机,以及乘坐他们需要注意什么。

知识 顾名思义,DDD可以认为是知识的一种。

DDD提供了这样的知识手段,让我们知道如何抽象出限界上下文以及如何去分治。

image.png

image.png

image.png

image.png

image.png