伸缩式架构设计
文章平均质量分 88
提供可扩展具有良好伸缩扩展的服务架构设计。
知始行末
君子有所为有所不为,为者不违心,不为者不为过。
展开
-
DDD之DP对象的应用
在领域驱动设计(Domain-Driven Design,DDD)中,“Domain Primitive”(领域原语)是指领域模型中的,它们代表了业务领域中的最基本的、不可分割的数据元素。Domain Primitive通常是不可变的,它们的行为受到业务规则的约束,并且通常不包含任何业务逻辑。Domain Primitive可以是简单的数据类型,如字符串、整数、布尔值等,也可以是一些复杂的值对象,如金额、日期、时间范围等。它们,例如订单号、产品价格、用户姓名等。原创 2024-04-14 20:46:00 · 1036 阅读 · 0 评论 -
图解Kafka高性能之谜(五)
简单架构设计:详细架构设计:原创 2023-10-28 21:54:44 · 787 阅读 · 0 评论 -
基于lambda的mongodb查询插件
基于lambda表达式,面向对象的mongodb查询插件原创 2023-02-18 16:06:53 · 1458 阅读 · 0 评论 -
架构设计之从OOP到ECS架构演进
背景规则现在公司用户中心提出一个需求,需要根据用户的会员等级实行不同的程度的打折,会员等级越高打折力度越大。其具体规则如下:青铜会员,折扣是9.9折; 黄金会员,折扣是8.8折; 铂金会员,折扣是6.6折; 钻石会员,折扣是5折。OOP实现:对于熟悉Object-Oriented Programming的同学,一个比较简单的实现是通过类的继承关系(此处省略部分非核心代码):public abstract class Member { public abstract double原创 2021-08-01 17:22:24 · 3291 阅读 · 1 评论 -
nginx+consul实现动态负载均衡(五)
对于社区版的nginx做到负载动态负载均衡主要有三种方案:tengine的dyups模块;微博的upsync;openResty的balancer_by_lua原创 2021-06-19 22:30:03 · 1077 阅读 · 0 评论 -
Nginx(一)
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。原创 2021-06-14 14:45:08 · 719 阅读 · 1 评论 -
策略模式之聚合支付业务的枚举实现
背景用户点击前端支付渠道图标,拉取不同渠道厂商接口完成支付。如下图原创 2021-06-12 21:47:11 · 1133 阅读 · 0 评论 -
nginx高性能之谜(六)
为了解决 10,000 个同时连接的 C10K 问题,nginx 的编写考虑了不同的架构——一种更适合同时连接数和每秒请求数的非线性可扩展性。nginx 是基于事件的,因此它不遵循 Apache 为每个网页请求生成新进程或线程的风格。最终结果是,即使负载增加,内存和 CPU 使用率仍可管理。nginx 现在可以在具有典型硬件的服务器上提供数万个并发连接。原创 2021-06-05 16:20:21 · 864 阅读 · 1 评论 -
lua-resty-lock在分布式缓存中的应用
分布式缓存下图是分布式缓存应用设计中常见的架构,该架构采用redis集群作分布式缓存。接入层nginx+lua读取本地缓存;如果缓存没有命中,则接入层会接着读取分布式redis集群的缓存;如果还是没有命中,则会回溯到服务集群中应用的本地缓存;如果还是没有命中,则会调用依赖服务获取数据,同时异步写入到redis集群中;原创 2021-05-29 22:41:30 · 2059 阅读 · 1 评论 -
微信公众平台环境搭建
准备微信官方文档外网映射工具Natapp网址ngrokhttps://natapp.cn/windows环境运行运行natapp -authtoken=a021a8fe913ea048http://dm.natapp1.cc/wx/portal/wx6f8ce0ccadf3afffWxJava框架快速开发微信公众号WxJava 微信公众号框架https://github.com/Wechat-Group/WxJava微服务电商项目引入WxJava框架...原创 2021-05-26 23:02:54 · 1290 阅读 · 0 评论 -
构建分布式配置中心阿波罗
为什么要使用配置文件中心?为什么要使用分布式配置中心?统一管理微服务配置文件,可以实现动态化刷新配置文件。为什么我们要使用阿波罗? 不使用SpringCloudConfig阿波罗配置文件存放在数据库中,SpringCloudConfig存放在Git里面。建分布式配置中心阿波罗1.下载aploll配置中心https://github.com/nobodyiam/apollo-build-scripts2.上传apollo-build-scripts-master文件到服务器中...原创 2021-05-26 22:29:21 · 1143 阅读 · 0 评论 -
disruptor在基础框架中的实践
什么是Disruptor?Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作。原创 2021-05-24 22:09:31 · 1396 阅读 · 0 评论 -
Jdk、Spring、Dubbo之SPI机制
SPI简介SPI全称是Service Provider Interface是一种自动服务发现注册机制。本质是将接口实现类的全限定名配置在约定的配置文件,然后由服务加载器读取指定的加载文件名称,再动态加载实现类。这样我们可以在运行的时候动态替换接口实现,通过spi机制可以轻松实现我们应用程序的拓展功能。那么spi到底有什么用?在哪里用到了呢?下面将会以JavaSPI机制SpringSPI机制SpringBootSPI机制...原创 2021-05-17 23:11:24 · 2017 阅读 · 4 评论 -
项目代码重构心得
“计算机科学只存在两个难题:缓存失效和命名。” ——Phil KarIton一个好的命名能够快速了解业务意图,见名知意是基本准则。毕竟代码是写给人看的,大家一定见过一些垃圾的命名,比如a,b,c,e,huoqu,gengxin等诸如此类的命名。那么怎么能让我们的命名更加规范,易懂、能懂呢?像变量命名遵循驼峰规范,首字母大小写等基础的在这里不再赘述。在命名时我们可以借鉴一些大佬的命名,在java中我们可以以Spring框架代码为范本。下面讲解也是用Spring作为例子,在类、方法、变量三个方面进行阐述原创 2021-05-16 12:27:51 · 1593 阅读 · 0 评论 -
领域驱动模型设计(一)
三层架构的问题?我们平时的开发流程通常分为下面的三个步骤:技术选型,搭建基础技术框架。如我们使用java作为开发语言,使用SpringBoot、SpringCloud等框架,采用redis、mq等中间件,使用mysql、es存储数据。 然后我们搭建了基础的开发环境后,会在数据库中建表,然后用表数据映射到我们的数据实体。 采用mvc三层架构的模型开发我们的业务逻辑,所有业务逻辑写在service中,我们的实体通常只作为service操作的数据载体。下图是三层架构中我们主要的工程结构:在小原创 2021-03-24 15:26:49 · 4513 阅读 · 2 评论 -
领域驱动模型设计(二)
上一篇粗略地介绍了为什么需要使用领域驱动模型设计?下面我们将一一讲解下领域驱动设计中的一些比较难懂,但是却十分基础的概念。这些概念包括领域事件、领域、子域、核心域、通用域和支撑域,限界上下文,实体和值对象,聚合和聚合根。领域事件导致进一步的业务操作的事件,在 DDD 中这种事件被称为领域事件。如果一次业务操作导致多个聚合状态的变更,应采用领域事件的最终一致性。DDD“一次事务只更新一个聚合”的原则。领域事件处理包括:事件构建和发布、事件数据持久化、事件总线、消息中间件、事件接收和处理等。.原创 2021-03-27 16:15:06 · 2983 阅读 · 0 评论 -
领域驱动模型设计(三)
目录实体和值对象:从领域模型的基础单元看系统设计实体值对象值对象的代码形态值对象的运行形态聚合和聚合根聚合(Aggregate)聚合根(AggregateRoot)聚合的构建过程主要都包括哪些步骤聚合的一些设计原则总结实体和值对象:从领域模型的基础单元看系统设计实体对象,它们拥有唯一标识符,且标识符在历经各种状态变更后仍能保持一致。对这些对象而言,重要的不是其属性,而是其延续性和标识,对象的延续性和标识会跨越甚至超出软件的生命周期实体和值对象.原创 2021-05-09 22:05:21 · 1807 阅读 · 1 评论