SOA-DDD
布道
专注但要有大局观(先大后小,思路为先,实验为辅)
展开
-
再谈DDD和Microservices
面对高复杂度的时候我们会做关注点分离,这是一个最基本的哲学原则。技术维度分离,类似MVC这样的分层思想是我们广泛接受的 业务维度分离,根据不同的业态来划分系统,比如按售前、销售、售后划分微服务的架构更强调从业务维度的关注点分离来应对高复杂度。这是显著区别于传统SOA架构的特质之一,比如诞生于传统SOA时代的ESB(工业服务总线)就是一个典型的从技术关注点分离出来的中间件。业务和技术渐进...原创 2019-08-31 22:36:51 · 913 阅读 · 0 评论 -
微服务交互模式:同步 & 异步 & 超时
在微服务的架构范式中由多个微应用构成,而服务间通信和执行流程是分布式系统的基础, 服务间的交互模式一般有3种模式:同步调用模式、接口异步调用模式、消息队列异步模式。因此我们不得不在根据业务场景进行决策,但每种交互模式意味着存在都超时的可能性,因此需要系统化的处理以满足我们系统的健壮性、容错性。本节主要针对热门话题“微服务同步 & 异步 & 超时 & 补偿 & 快...原创 2019-06-14 15:59:32 · 6369 阅读 · 2 评论 -
如何进行微服务的演进
微服务这种架构风格迅速地成为软件行业的热词,并被许多互联网公司采纳。如今微服务已经进入所谓的Service Mesh 2.0时代,诸多微服务框架如雨后春笋般出现。由于微服务是业务而非技术在驱动,随之开始重视领域驱动设计(DDD),并尝试将领域驱动设计引入到微服务架构设计中。而微服务的完整定义来自Martin Fowler的文章《MicroServices》:每个服务运行在自己的进程中;微服务的...原创 2019-06-13 10:07:51 · 696 阅读 · 0 评论 -
如何一步步设计一款微服务的补偿方案
背景随着微服务化的系统越来越多,系统间的交互也呈现几何倍增的趋势,系统间面临一致性问题越来越突出。为了保障服务提供方与服务消费方的一致性,特别是面临最大努力通知型或补偿性的技术需求,服务化前做法是服务提供方需手写重试策略及各种配置->持久化消息->定时去处理消息等。它带来的以下问题是:1.客户端(新微服务)要做的重复性工作越来越多?需每个开发者熟悉它,去实现它;2.这个为什么...原创 2018-09-20 16:29:13 · 4627 阅读 · 0 评论 -
注册中心eureka,consul,zooKeeper,etcd选型
最近一年来一直在关注微服务系列,而它必不可缺少的组件就是注册中心。目前市面上辣么可以作为注册中心组件,那该如何选型? 特性 Consul zooKeeper etcd eureka 编写语言 go Java go ...原创 2017-09-13 09:36:09 · 11156 阅读 · 2 评论 -
再谈服务熔断、服务降级的差异性
最近1年来一直在关注微服务方向的东西,有点走学院派的风格。微服务是个神奇的东西,而它的特点就是“一解释就懂,一问就不知,一讨论就吵架”,今天我们要谈的是服务熔断、服务降级。两者其实从有些角度看是有一定的类似性的:目的很一致,都是从可用性可靠性着想,为防止系统的整体缓慢甚至崩溃,采用的技术手段; 最终表现类似,对于两者来说,最终让用户体验到的是某些功能暂时不可达或不可用; 粒度一般...转载 2017-09-01 23:19:38 · 492 阅读 · 0 评论 -
微服务下事件驱动
领域驱动设计(DDD)是一种奇妙的技术,试图使我们的设计更接近于业务领域 。我们采用了领域驱动的开发方式,使用了充血模型,享受了他的好处,但是也不得不面对他带来的弊端。这个弊端在分布式的微服务架构下面又被放大。事务一致性事务一致性的问题在Monolithic下面不是大问题,在微服务下面却是很致命,我们回顾一下所谓的ACID原则Atomicity - 原子性,改变数据状态要么是一起完成,...原创 2017-08-17 17:07:04 · 2660 阅读 · 0 评论 -
微服务下DDD的充血模式及事件溯源
之前分享过DDD,到底与微服务的关系如何?很多人还是觉得很虚幻,DDD那么复杂的理论,聚合根、值对象、事件溯源,到底我们该怎么入手呢?实际上DDD和面向对象设计、设计模式等等理论有千丝万缕的联系,如果不熟悉OOA、OOD,DDD也是使用不好的。不过学习这些OO理论的时候,大家往往感觉到无用武之地,因为大部分的Java程序员开发生涯是从学习J2EE经典的分层理论开始的(Action、Servic...原创 2017-08-17 16:28:41 · 8713 阅读 · 0 评论 -
DDD入门级分享
前段时间整理出来的,本着我为人人,人人为我的理念原创 2016-12-13 14:19:32 · 2130 阅读 · 0 评论 -
微服务化系统拆分设计的原则
最近刚好有机会处理把巨型运用拆分成微服务,无意中看到这个,觉得很赞的!x轴:水平复制,即在负载均衡服务器后增加多个web服务器;z轴扩展:是对数据库的扩展,即sharding(分库关注垂直方向是将关系紧密的表放在一台DB,分表关注水平方向将一张数据量大表通过hash等策略放在多台DB);y轴扩展:是功能分解,将不同职能的模块分成不同的服务。例如订单管理中心、客户信息管理中心、商品管理中...翻译 2016-12-08 15:07:20 · 5213 阅读 · 0 评论 -
分布式Session的几种实现方式
在分布式环境,管理Session通常使用下面三种方式:一、Session Replication 方式管理 (即session复制) 简介:将一台机器上的Session数据广播复制到集群中其余机器上 使用场景:机器较少,网络流量较小 优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问转载 2016-08-22 11:25:56 · 2050 阅读 · 0 评论 -
产品模板化与系统边界引发的思考
系统划分边界确定一直是一个比较难搞的活,拆分之后的系统真的能做到职责单一???这就涉及到技术上的思考坚持CAP、引入Base思想.....不纠结了吧,今天分享一个阿里的大牛的经验。1、产品的定位需设计的模板化的做法,比如我有一个订单系统,需要整合各个业务系统的订单,而每个业务系统的业务属性差别很大、业务单据状态运转也有差距,那这该如何取舍?坚持模块解耦,随时可替换,引入...原创 2016-07-22 11:30:18 · 747 阅读 · 0 评论 -
Windows平台分布式架构实践 - 负载均衡
最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行。那么大家(开发者和企业)为什么那么的迫切的希望.NET跨平台呢?第一个理由是便宜,淘宝号称4万多台服务器全部运行在Linux,Linux平台下还有免费的MySql,这些都是免费的,这些省下来直接就是利润呀,做企业的成本可以降低又...转载 2014-06-12 11:05:47 · 998 阅读 · 1 评论 -
谈谈对于企业级系统架构的理解
在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什么是三层架构呢?它包括表现层,业务层,数据访问层;而对于一个新手来说,从抽象意义上的三层架构,逻辑上就划分为三个层。这个是最基本的三层架构模式。表现层充当系统的界面呈现以及UI逻辑的角色,也就是说,UI(用户界面)属于表现层;举一个对于asp.net WebForm来说,人们喜欢把对于UI的控制原创 2013-11-15 17:15:19 · 1149 阅读 · 0 评论