ShouKai

人生在于体会,今时哪及昔时

DDD:DSL(领域专用语言)

领域驱动设计系列

DSL 概念 DSL定义 领域专用语言(DSL)是一种计算机语言专用于一个特定的应用领域。这与通用语言(GPL)相反,后者广泛适用于各个领域。DSL种类繁多,从用于公共领域的广泛使用的语言(例如网页的HTML)到只有一种或几种软件使用的语言(例如MUSH软代码)。DSL可以根据语言的种类进一步细分,包括特定于域的标记语言,特定于域的建模语言(规范语言)和领域特定的编程语言。专用计算机语言...

DDD:Zachman Framework

领域驱动设计系列

Zachman Framework Zachman框架(Zachman framework)是一种逻辑结构,它旨为信息技术企业提供一种可以理解的信息表述。它可以对企业信息按照要求分类和从不同角度进行表示。Zachman框架的创始人John Zachman早在1987年就提出了这种思想,它全称为: 企业架构和企业信息系统结构架构(Zachman Framework for Enterpris...

DDD:Business Architecture(业务架构)

领域驱动设计系列

业务架构演进 Zachman framework。虽然没有明确提出业务架构这个概念,但是已经包含了业务架构关注的一些主要内容:如流程模型、数据、角色组织等,既然没有提出业务架构概念,自然也就没有包含构建方法。Zachman 模型应该算是业务架构的开端,同时,它也表明了这一工具或者技术的最佳使 用场景——面向复杂系统构建企业架构。 TOGAF 进一步认为企业架构分 为两大部分:业务架构和 ...

DDD:EventStorming(事件风暴)

领域驱动设计系列

事件风暴 事件风暴定义 EventStorming是一种灵活的研讨会格式,用于协作探索复杂的业务领域 — Alberto Brandolini (Event Storming) EventStorming is a flexible workshop format for collaborative exploration of complex business domains....

Architecture 201907 摘录&搜索

一些博客摘记

本摘要为阅读 Architecture 过程中的摘录及相关搜索,书籍链接:架构师(2019年7月) HPCC(High Precision Congestion Control) HPCC 含义:High Precision Congestion Control- 高精度拥塞控制。 HPCC 是在高性能的云网络环境下,对现有的拥塞控制的一种替代方案。旨在同时实现高速云网络的极致性能和超...

Architecture 201906 摘录&搜索

一些博客摘记

本摘要为阅读 Architecture 过程中的摘录及相关搜索,书籍链接:架构师(2019年6月) API(RPC或者HTTP/RESTful)设计准则 设计准则: 提供清晰的思维模型 provides a good mental model Make things as simple as possible, but no simpler. 容许多个实现 allows ...

开源软件:Dubbo 04 核心流程

Dubbo 源码解析系列

导图 (点击查看大图) 参考 Apache Dubbo 精尽 Dubbo 原理与源码专栏

开源软件:Dubbo 03 核心概念和基础设施

Dubbo 源码解析系列

导图 (点击查看大图) 参考 Apache Dubbo 精尽 Dubbo 原理与源码专栏

开源软件:Dubbo 02 整体设计

Dubbo 源码解析系列

整体设计 设计图示(dubbo给出) 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。 图中绿色小块的为扩展接口,蓝色小块为...

开源软件:Dubbo 01 SPI

Dubbo 源码解析系列

Java SPI 相关概念 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。 系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接...

开源软件:Feign 05 核心类及接口

Feign 源码解析系列

简介 本文在《拍拍贷基础框架团队博客-feign源码解析》的基础上,进行了版本更新、修改和补充 Feign makes writing java http clients easier Feign 是一款 java 的 Restful 客户端组件,Feign使得 Java HTTP 客户端编写更方便。Feign 灵感来源于Retrofit, JAXRS-2.0和 WebSocket。F...

开源软件:Feign 04 调用过程

Feign 源码解析系列

简介 本文在《拍拍贷基础框架团队博客-feign源码解析》的基础上,进行了版本更新、修改和补充 Feign makes writing java http clients easier Feign 是一款 java 的 Restful 客户端组件,Feign使得 Java HTTP 客户端编写更方便。Feign 灵感来源于Retrofit, JAXRS-2.0和 WebSocket。F...

开源软件:Feign 03 初始化

Feign 源码解析系列

简介 本文在《拍拍贷基础框架团队博客-feign源码解析》的基础上,进行了版本更新、修改和补充 Feign makes writing java http clients easier Feign 是一款 java 的 Restful 客户端组件,Feign使得 Java HTTP 客户端编写更方便。Feign 灵感来源于Retrofit, JAXRS-2.0和 WebSocket。F...

开源软件:Feign 02 手册翻译

Feign 源码解析系列

简介 Feign makes writing java http clients easier Feign 是一款 java 的 Restful 客户端组件,Feign使得 Java HTTP 客户端编写更方便。Feign 灵感来源于Retrofit, JAXRS-2.0和 WebSocket。Feign 最初是为了降低统一绑定Denominator 到 HTTP API 的复杂度,不区...

开源软件:Feign 01 整体概览

Feign 源码解析系列

学习过程 学习过程结合之前的文档进行开展:开源项目源码学习过程 相关文档 1 使用文档:清楚目标项目的使用方法、功能列表; Feign 功能介绍 Spring Cloud Feign 2 架构文档:一个系统可以(在重大的系统中也确实如此)同时出多种不同的构架类型. 以不同的方式检查同一系统,分析系统的不同部分,或使用不同级别的分解, 都有可能发现不同的构架类型 3 对...

读书笔记:大教堂和集市

1 大教堂和集市 1.1 问题域 世界上的建筑可以分两种:一种是集市,天天开放在那里,从无到有,从小到大;还有一种是大教堂,几代人呕心沥血,几十年才能建成,投入使用。 当你新建一座建筑时,你可以采用集市的模式,也可以采用大教堂的模式。一般来说,集市的特点是开放式建设、成本低、周期短、品质平庸;大教堂的特点是封闭式建设、成本高、周期长、品质优异。 Eric Raymond就问了一个...

读书笔记:架构整洁之道

第一部分 概述 设计(Design)与架构(Architecture)区别是什么? 一丁点区别都没有! “架构”这个词往往使用于“高级层”的讨论中,这类讨论一般都把“底层”细节排除在外。而“设计”一词,往往用来指代具体的系统底层组织结构和实现细节。但是,从一个真实的系统架构师的日常工作来看,这样的区分是根本不成立的。 第二部分 编程范式 结构化编程是对程序控制权的...

分布式事务 02:Saga模式

分布式事务系列介绍

分布式事务:Saga模式 1 Saga相关概念 1987年普林斯顿大学的Hector Garcia-Molina和Kenneth Salem发表了一篇Paper Sagas,讲述的是如何处理long lived transaction(长活事务)。Saga是一个长活事务可被分解成可以交错运行的子事务集合。其中每个子事务都是一个保持数据库一致性的真实事务。 论文地址:sagas 1.1 ...

分布式事务 01:相关概念

分布式事务系列介绍

分布式事务:相关概念 相关概念整理 1 事务 1.1 ACID ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法...

架构模式:Onion Architecture

Onion Architecture 架构介绍 在洋葱的层之间,存在强依赖性规则:外层可以依赖于较低层,但是较低层中的代码不能直接依赖于外层中的任何代码。这本质上是依赖性倒置原则,只是根据整体架构而不仅仅是单个类来呈现。 洋葱架构的本质是依赖倒置原则的应用,以及层之间的架构定义优先级。杰弗里·巴勒莫(Jeffrey Palermo)在他关于洋葱建筑的原始文章中强调了这一点 - 洋葱建筑...