05 2021 档案

摘要:一、解耦领域层和基础层 DDD严格的分层架构告诉我们,每一层只能与其下方的一层发生耦合。因此用户接口层只与应用层发生交互,应用层往下只与领域层发生交互,领域层往下只与基础层发生交互。 在传统的代码分层结构Controller—Service—Dao结构中,经常能看到在Service业务实现层的代码中 阅读全文
posted @ 2021-05-31 12:17 纪煜楷 阅读(4073) 评论(1) 推荐(1) 编辑
摘要:一、DDD分层架构 DDD分层架构中有很重要的依赖原则:每层只能与位于下方的层发生耦合,类似于网络的7层或TCP/IP的4层模型架构,每一层各司其职,并且只关心向下一层的实现,而不会出现各层耦合。 DDD分层架构中包含四层:从上到下分别是用户接口层,应用层,领域层和基础层。 二、洋葱架构 2008年 阅读全文
posted @ 2021-05-31 12:16 纪煜楷 阅读(22659) 评论(2) 推荐(5) 编辑
摘要:一、领域事件 领域内的业务行为发生后通常会触发进一步的业务操作,DDD中这类事件被称为领域事件。比如电商领域,订单下单后触发支付动作,支付动作完成后触发仓库出货动作,出货完成触发快递运输动作,这些都是业务流程中的步骤,以领域事件表示。 在和业务专家沟通的过程中,诸如一些他们聊到的关键词“如果这样,就 阅读全文
posted @ 2021-05-30 20:17 纪煜楷 阅读(3631) 评论(0) 推荐(0) 编辑
摘要:一、EventBus概述 Guava 事件总线EventBus允许在服务内部的组件之间进行发布-订阅式的通信,是观察者模式的优雅实现。观察者模式和EventBus都需要注册监听者事件,发布者发布事件。 不同在于观察者模式的发布者需要继承Observable,实现事件发布的逻辑,监听者需要自己实现Ob 阅读全文
posted @ 2021-05-30 18:06 纪煜楷 阅读(2312) 评论(0) 推荐(0) 编辑
摘要:一、聚合 上文讲到的实体和值对象,都只是带有业务逻辑的个体对象,表现的主要是个体属性和行为。所以在领域模型中需要一个组织,有序的组织起个体的行为,将紧密关联的个体对象聚集到一起,按照业务编排完成局部完整的业务逻辑。 比如在学生和老师都是带有个体属性和实体,都有各自的行为,是靠校长把老师和学生聚合到学 阅读全文
posted @ 2021-05-29 15:48 纪煜楷 阅读(6748) 评论(1) 推荐(0) 编辑
摘要:一、实体 实体是领域模型中的一个对象,带有业务含义的对象,集多个业务属性,业务行为于一体。领域建模时,我们根据业务场景分析,找到跟业务逻辑相关的实体对象,然后按照实体间的关联将多个对象进行聚合。 实体最大的特点是拥有唯一标识符,这个标识符贯穿整个软件的生命周期,不随业务流程和状态变更后更改,在领域模 阅读全文
posted @ 2021-05-28 23:23 纪煜楷 阅读(2474) 评论(0) 推荐(1) 编辑
摘要:一、域的概念和划分 DDD对业务领域划分到一定程度后,便将特定问题限定在了特定的边界内,这个特定的边界就是域,在边界内进行领域建模,微服务代码落地。 边界有大有小,领域可以进一步划分为子域,把问题聚焦到一个特定的业务范围内。 在领域不断细分的过程中,通常被分解为核心子域,通用子域和支撑子域 企业内决 阅读全文
posted @ 2021-05-28 17:06 纪煜楷 阅读(3090) 评论(0) 推荐(0) 编辑
摘要:一、DDD从放弃到入门 希望了解一套微服务框架的;希望学习到新技术的;开发的系统不复杂,模块少而独立的;当前自己设计的架构已满足拓展性,可复用性,技术与业务复杂度已分离的; 这几类人群不是DDD的目标人群,建议尽早放弃,学习领域驱动设计能得到的收获概括起来大致如下: 1、领域驱动设计是一套系统的设计 阅读全文
posted @ 2021-05-28 15:15 纪煜楷 阅读(6353) 评论(0) 推荐(0) 编辑
摘要:一、AKF拓展立方体 中台本质上是企业的业务模型,中台领域模型落地时需要架构的支撑。 无论是最早的阿里巴巴中台战略的落地,还是其他企业的实施方案来看,目前中台落地的技术手段和架构,最佳实践就是微服务架构,微服务架构有利于服务的拆分和拓展,以支持日益增长的业务需求,《架构真经》的书里提出了微服务的AK 阅读全文
posted @ 2021-05-28 11:14 纪煜楷 阅读(935) 评论(0) 推荐(0) 编辑
摘要:一、数字化转型 数字化转型是企业能力全面体系化,系统化,数据化提升的过程,这种提升包括了技术能力,业务能力,组织架构合理性等多方面的提升。 而随着多年来海量高频业务的发展,技术也在推动着持续进步,并且越来越多的技术方案趋向成熟,类似于阿里巴巴,腾讯,美团等,所有业务都已上云,并且在整套分布式架构上, 阅读全文
posted @ 2021-05-28 11:12 纪煜楷 阅读(948) 评论(0) 推荐(0) 编辑
摘要:一、限流 限流是我们在做服务端接口时,面对高并发的场景必须要考虑的问题。限流即限制流量进入 类似医院体检排号,每天放出来的号是有限的,因为只有这么多医生,多了处理 停车场满了的时候会在门口的大屏打上车位已满,车位就这么多 奶茶店的排队,系统的排号也是有限的,店铺到点了要关门 如上都是限流场景的体现, 阅读全文
posted @ 2021-05-26 00:13 纪煜楷 阅读(1073) 评论(0) 推荐(0) 编辑
摘要:LVS+Nginx动静分离 上文聊到,对用户入口流量的第一级控制,其实就是DNS智能解析,搭配一个负载均衡器LVS或Nginx,配合Keepalived做到入口高可用,代理或转发请求到Nginx节点,做负载均衡,并从Nginx节点上获取 html资源。 但此时需要思考一个问题? 在html上请求到的 阅读全文
posted @ 2021-05-25 16:46 纪煜楷 阅读(753) 评论(0) 推荐(0) 编辑
摘要:入口第一级缓存:CDN 什么是CDN? 对CDN的认识,了解完如下三个问题及其过程就可以知道答案了 一、浏览器解析域名过程 1、浏览器的进程在操作系统上,当输入域名地址后,浏览器首先到本地的hosts配置文件寻找域名对应的服务器ip地址 2、hosts没有找到则寻找系统本地的dns缓存(即LDNS, 阅读全文
posted @ 2021-05-25 16:41 纪煜楷 阅读(618) 评论(0) 推荐(0) 编辑
摘要:2003年Eric Evans出版了《领域驱动设计》,在不瘟不火了十几年后,终于随着容器技术带来的微服务架构盛行,而焕发了新的生命力,DDD领域驱动设计(Domain Driven Design)成为很多微服务的主流设计思想,并参照着DDD对微服务进行了有明确业务界限的拆分和落地。 DDD从聚焦业务 阅读全文
posted @ 2021-05-22 13:58 纪煜楷 阅读(637) 评论(0) 推荐(0) 编辑
摘要:使用设计模式能够增加系统的健壮性,易修改性和可扩展性,当你进行开发的软件规模比较大的时候,良好的设计模式会给编程带来便利,让系统更加稳定,这些在自己编写小程序的时候是体现不出来的。现在大多数框架都使用了很多设计模式,正是因为有了这些设计模式,才能让程序更好的工作。自己在写代码的时候,如果能合理的使用 阅读全文
posted @ 2021-05-21 20:18 纪煜楷 阅读(116) 评论(0) 推荐(0) 编辑
摘要:Lambda 是一个匿名函数,可以把 Lambda表达式 理解为是一段可以传递的代码 (将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升,Lambda表达式是 Java8 中最重要的新功能之一。可以替代只有一个抽象函数的接口实现, 阅读全文
posted @ 2021-05-21 19:22 纪煜楷 阅读(219) 评论(0) 推荐(0) 编辑
摘要:JDK8起新添加的Stream API 把真正的函数式编程风格引入到Java中。以一种声明的方式处理数据,从而写出高效率、干净、简洁的代码。 Stream特性 1、不是数据结构,没有内部存储 2、不支持索引访问 3、延迟计算 4、支持并行操作 5、容易生成数组或集合 6、支持过滤,查找,转换,汇总, 阅读全文
posted @ 2021-05-21 18:44 纪煜楷 阅读(268) 评论(0) 推荐(0) 编辑
摘要:策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改,在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法 比如在一个可变流程中,每个流程都是独立互不影响的,我们想任意替换流程中 阅读全文
posted @ 2021-05-20 16:42 纪煜楷 阅读(110) 评论(0) 推荐(0) 编辑
摘要:外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个可以访问,并且屏蔽了系统复杂性的接口。它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用 场景:邮寄信件的过程,每个需要寄信的人,都需要 阅读全文
posted @ 2021-05-20 16:16 纪煜楷 阅读(66) 评论(0) 推荐(0) 编辑
摘要:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构,这种模式的实现有两种 实现1、通过继承原有的类,在保证父类原有功能的基础上,提供额外的功能 实现2、创建一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 场景:将旧 阅读全文
posted @ 2021-05-20 15:59 纪煜楷 阅读(71) 评论(0) 推荐(0) 编辑
摘要:命令模式(Command Pattern)把请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象A,并把该命令传给相应的N个对象,由N个对象去执行命令。 命令模式主要解决在某些场合中,命令发布者和N多命令执行者的耦合关系。比如在项目实施过程中,客户同时通知SA修改需求 阅读全文
posted @ 2021-05-20 14:22 纪煜楷 阅读(689) 评论(0) 推荐(0) 编辑
摘要:桥接模式(Bridge Pattern)是用于把抽象化与实现化解耦,使得二者可以独立变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦 桥接模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响 场景: Company抽象:XX公司的盈利模 阅读全文
posted @ 2021-05-20 11:40 纪煜楷 阅读(238) 评论(0) 推荐(0) 编辑
摘要:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,它结合了两个独立接口的功能。适配器将一个接口的实现,转换成兼容另外一个实现的接口功能 场景:通过一个适配器Adaper,将一个老的OldOutput电流接口实现的220V输出,转换成新的TargetOutput电流接口实现 阅读全文
posted @ 2021-05-19 21:50 纪煜楷 阅读(80) 评论(0) 推荐(0) 编辑
摘要:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式 场景:学生1和2观察等待着老师布置作业,老师通过微信布置完作业,学生1和2便同时接收到了通知,但学生1决定再看会电视,学生2决定马上写作业 在 阅读全文
posted @ 2021-05-19 20:48 纪煜楷 阅读(485) 评论(0) 推荐(0) 编辑
摘要:在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行 场景:总部设计的宝马车的模型模板,由各个分厂去根据抽象方法实现不同的车型,比如车的启动有多种不同实现,车的喇叭系统有多种不同实现,车的导航 阅读全文
posted @ 2021-05-19 18:06 纪煜楷 阅读(97) 评论(0) 推荐(0) 编辑
摘要:责任链模式主要包含以下角色。 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。 具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者。 客户类(Client)角 阅读全文
posted @ 2021-05-19 17:49 纪煜楷 阅读(240) 评论(0) 推荐(0) 编辑