系统架构
文章平均质量分 94
albon_arith
欢迎交流
展开
-
架构设计方法 - 扩展性
什么是软件架构?软件架构这项工作的实质就是规划如何将系统切分成组件,并安排好组件之间的排列关系,以及组件之间互相通信的方式。软件架构设计的目标是支撑软件系统的全生命周期,设计良好的架构可以让系统便于理解、易于修改、方便维护,并且能轻松部署。软件架构的终极目标就是最大化程序员的生产力,同时最小化系统的总运营成本。方法总结本文主要说下解决扩展性的方法。SOLID 设计原则:单一职责、依赖反转、开闭、里式替换、接口隔离再往上是更大组件粒度的设计原则:复用/发布等同原则、共同闭包原则、共同复用原原创 2022-04-10 17:23:22 · 802 阅读 · 0 评论 -
模块级别自动化测试的经验与教训
模块级别自动化测试的经验与教训概述原理经历的坑本地缓存的 dump 问题性能问题静态方法、随机数问题带异步任务的请求结束时间判断问题代码规范问题总结参考资料模块级别自动化测试的经验与教训概述搞了几个月的自动化测试,结果不甚理想,这里做一个简单的总结。为什么要做自动化测试呢?因为手工测试效率低,找 case、执行 case 太费时间。为...原创 2018-06-18 16:57:28 · 3785 阅读 · 6 评论 -
一个简洁安全的配置解析框架
背景设计与实现注解标记关键信息自定义配置解析规则支持 Bean ValidationConfigParser 解析器类型自动匹配安全保障扩展功能总结背景为了解决配置解析中的一些痛点,开发了一个配置解析框架。我们先说一下,老的的配置解析方式有哪些问题?老的配置解析代码示例,如下所示: private List<String> pe...原创 2018-07-08 22:25:37 · 1464 阅读 · 0 评论 -
面向对象设计的 SOLID 原则
文章目录依赖倒置原则接口隔离单一职责开闭原则里氏替换原则迪米特法则资料依赖倒置原则高级模块不应当依赖于低级模块。它们都应当依赖于抽象。抽象不应当依赖于实现,实现应当依赖于抽象。依赖倒置原则存在的真正意义是指,我们需要将一些对象解耦,它们的耦合关系需要达到当一个对象依赖的对象作出改变时,对象本身不需要更改任何代码。这样的架构可以实现一种松耦合的状态的系统,因为系统中所有的组件,彼此之间...原创 2019-05-26 12:01:30 · 869 阅读 · 0 评论 -
【笔记】从 Paxos 到 Zookeeper:第七章 Zookeeper 技术内幕之客户端
文章目录系统模型数据模型节点特性版本-保证分布式数据原子性操作Watcher-数据变更通知ACL-保障数据安全序列化与协议序列化通信协议客户端一次会话的创建过程初始化阶段会话创建阶段响应处理阶段服务器地址列表ClientCnxn:网络 I/O会话系统模型这一节首先从数据模型、节点特性、版本、Watcher 和 ACL 五方面来讲述 Zookeeper 的系统模型。数据模型ZooKeeper...原创 2019-06-02 09:26:02 · 869 阅读 · 0 评论 -
分布式链路跟踪系统(二):基本的系统架构
在上一篇文章“分布式链路跟踪系统(一):Dapper 介绍”里讲了分布式链路跟踪系统的主要功能、实现原理,这一节讲一下基本的系统架构设计。分布式链路跟踪系统架构主要有三个部分:数据收集、分析处理、查询展示,如下图所示:之前讲过 Trace 数据的埋点主要依赖通用的中间件,埋点记录的数据如何收集呢?有两种方式:Trace SDK 直接上报、写到日志文件再通过 Agent 收集上报。直接上报缺点是...原创 2019-06-29 14:08:28 · 1191 阅读 · 0 评论 -
领域驱动设计概述
领域驱动设计(Domain Driven Design,DDD)是由 Eric Evans 最早提出的综合软件系统分析和设计的面向对象建模方法,如今已经发展成为了一种针对大型复杂系统的领域建模与分析方法。它完全改变了传统软件开发工程师针对数据库进行的建模方法,从而将要解决的业务概念和业务规则转换为软件系统中的类型以及类型的属性与行为,通过合理运用面向对象的封装、继承和多态等设计要素,降低或隐藏整个...原创 2019-08-03 11:10:36 · 1296 阅读 · 0 评论 -
MVC 模型
MVC 是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。模型 Model 是应用程序的核心,包含了数据和处理数...原创 2019-07-27 11:32:40 · 1173 阅读 · 0 评论 -
CQRS 架构
CQRS 是一个读写分离的架构思想,全称是:Command Query Responsibility Segregation,即命令查询职责分离,表示在架构层面,将一个系统分为写入(命令)和查询两部分。一个命令表示一种意图,表示命令系统做什么修改,命令的执行结果通常不需要返回;一个查询表示向系统查询数据并返回。读写两边可以用不同的架构实现,方便实现 CQ 两端的分别优化。CQRS 架构里通常读...原创 2019-07-27 16:37:25 · 2841 阅读 · 0 评论 -
消息队列 RocketMQ 设计学习
消息队列 RocketMQ 设计学习概述一个消息队列的实现需要关注哪些问题点?需要实现哪些功能?先说最通用的功能,任何系统都需要考虑的功能:系统结构高可用高性能再说,MQ 特有的功能:Message OrderAt Least Once消息查询消息堆积能力事务定时消息回溯消费物理部署结构如上图所示, RocketMQ的部署结构有以下特点:...原创 2018-05-21 14:40:54 · 1017 阅读 · 0 评论 -
分布式事务解决方案总结
分布式事务两阶段提交协议Paxos 算法本地消息表TCC 事务Saga 模式阿里的分布式事务处理方案 GTS参考资料分布式事务两阶段提交协议两阶段提交协议是用来处理分布式事务的。在分布式系统中,每个节点虽然可以知晓自己的操作时成功或者失败,却无法知道其他节点的操作的成功或失败。当一个事务跨越多个节点时,为了保持事务的ACID特性,需要引入一个作为协调者...原创 2018-03-13 17:20:24 · 1061 阅读 · 0 评论 -
Java 日志框架解析:设计模式、性能
在平常的系统开发中,日志起到了重要的作用,日志写得好对于线上问题追踪有着很大的帮助。一个好的日志框架,既要方便易用,也要有较好的性能,减少日志输出对系统内存、CPU 的影响。研究一款开源项目,学到的不仅仅是这个项目本身,还会学到很多设计思想,可以利用到日常工作中。原创 2017-09-28 10:00:54 · 5501 阅读 · 0 评论 -
Java 并发框架 Disruptor 源码分析:RingBuffer
Disruptor 是一个高性能的线程间通信库。它来自于 LMAX 对并发、性能和非阻塞算法的研究,如今交易系统基础架构的核心部分。这里,我们围绕其基础数据结构 RingBuffer,深入源码学习一下其实现。原创 2017-10-17 20:05:08 · 2949 阅读 · 0 评论 -
Spring 框架学习(一):设计理念、整体架构
总结一下,Spring 的设计理念是:1. IoC 控制反转:降低了对象之前的耦合关系,简化了应用的开发。2. AOP 面向切面编程:方便以动态的、非侵入的方式,增强服务的功能。3. 面向接口编程:作为平台,核心功能之外服务,都可以选择不同的技术实现。原创 2017-10-20 14:21:39 · 1103 阅读 · 0 评论 -
Netty 权威指南笔记(四):架构剖析
对 Netty 的架构进行剖析,学习其设计,便于在今后的架构设计中,设计出高性能、高可靠、可扩展的产品。原创 2017-11-02 12:54:04 · 668 阅读 · 0 评论 -
基于系统负载的动态限流组件 dynamic-limiter
基于系统负载的动态限流组件 dynamic-limiter背景动态限流原理测试效果总结基于系统负载的动态限流组件 dynamic-limiter最早发在了:Qunar 技术沙龙背景一个系统的处理能力是有限的,当请求量超过处理能力时,通常会引起排队,造成响应时间迅速提升。如果对服务占用的资源量没有约束,还可能因为系统资源占用过多而宕机。因此,为了保证系统在遭遇原创 2018-01-05 22:59:50 · 4753 阅读 · 5 评论 -
性能优化案例(一):通过修改路由算法提升系统性能
性能优化案例一通过修改路由算法提升系统性能概述系统结构优化方法优化效果性能优化案例(一):通过修改路由算法提升系统性能概述一般性能优化方法有两种:一是,从代码层面优化,提升某个方法的性能,从而提升单机性能;二是,从系统结构层面优化,通过减少无用功,来减少资源消耗。这里,我们写一个用第二种方法优化性能的例子。系统结构首先,说一下最初的系统结构。我们有一原创 2018-02-03 19:25:30 · 1342 阅读 · 0 评论 -
性能优化概述
如何做性能优化确定优化目标定位性能瓶颈制定优化方法测试优化效果性能优化目标是什么吞吐量,越大越好延时,越低越好同样的资源下(前提),吞吐量越高越好,响应时间越低越好。通俗的讲就是:多快好省。如何定位系统性能的瓶颈呢资源分析代码分析资源分析资源分析以对系统资源的分析为起点,涉及的系统资源有:CPU,内存,磁盘,网卡。通过对资源使用率的原创 2017-09-04 10:53:10 · 1925 阅读 · 0 评论 -
系统设计:关于高可用系统的一些技术方案
系统设计关于高可用系统的一些技术方案高可用方法论扩展隔离解耦限流分类漏桶算法令牌桶算法滑动窗口计数法动态限流降级熔断发布相关模块级自动化测试灰度发布 回滚其他总结参考资料系统设计:关于高可用系统的一些技术方案可靠的系统是业务稳定、快速发展的基石。那么,如何做到系统高可靠、高可用呢?下面首先讲一下高可用需要面临的常见问题,再从技术原创 2017-09-17 09:22:32 · 30009 阅读 · 2 评论 -
降级熔断框架 Hystrix 源码解析:滑动窗口统计
一个滑动窗口统计主要分为两步:1. bucket 统计,bucket 的大小决定了滑动窗口滚动时间间隔;2. window 统计,window 的时长决定了包含的 bucket 的数目。Hystrix 实现滑动窗口利用了 RxJava 这个响应式函数编程框架。原创 2017-09-14 11:25:09 · 8558 阅读 · 2 评论