随笔分类 -  软件架构设计

软件设计原则
摘要:一、分类 六大软件设计原则:单一职责原则、里式替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。 二、单一职责原则 一个类或者一个模块只负责一个功能。 三、里式替换原则 针对继承而言的。子类可以扩展父类的方法,但不能改变父类原有的方法。另外,里式替换原则,最重要的就是多用组合,少用继承。就 阅读全文

posted @ 2024-06-20 15:44 木乃伊人 阅读(13) 评论(0) 推荐(0) 编辑

GOF 23种设计模式总结
摘要:一、简介 二、详情 三、细节 四、举例 4.1、单例模式 同一个进程只能实例化一次。 private修饰符关闭发现,静态属性,暴露静态方法 a、 多线程会出问题,因为不知道是否已经创建对象,会重复创建导致单例失败。处理方式为加锁,并且是双检锁,好处是可以避免等待锁。 b、当然,多线程如果不想使用锁, 阅读全文

posted @ 2023-12-13 16:18 木乃伊人 阅读(425) 评论(0) 推荐(0) 编辑

VO、BO、PO、DTO、DAO
摘要:一、简介 【VO】: View Object。用于表示一个与前端交互的对象; 【DTO】: Data Transfer Object。表示一个数据传输对象; 【BO】: Business Object。表示一个业务对象; 【PO】:Persistant Object。表示数据库中的一条映射对象 【D 阅读全文

posted @ 2023-11-23 15:07 木乃伊人 阅读(178) 评论(0) 推荐(0) 编辑

接口优化总结
摘要:一、架构图 二、批处理 批量思想:批量操作数据库,这个很好理解,我们在循环插入场景的接口中,可以在批处理执行完成后一次性插入或更新数据库,避免多次IO。 二、异步处理 异步思想:针对耗时比较长且不是结果必须的逻辑,我们可以考虑放到异步执行,这样能降低接口耗时。 例如一个理财的申购接口,入账和写入申购 阅读全文

posted @ 2023-11-15 14:17 木乃伊人 阅读(13) 评论(0) 推荐(0) 编辑

消息幂等(去重)解决方案
摘要:一、场景 程序A接受到这个消息M并完成消费逻辑之后,正想通知消息中间件“我已经消费成功了”的时候,程序就重启了,那么对于消息中间件来说,这个消息并没有成功消费过,所以他还会继续投递。这时候对于应用程序A来说,看起来就是这个消息明明消费成功了,但是消息中间件还在重复投递。 基于消息的投递可靠(消息不丢 阅读全文

posted @ 2023-11-13 16:10 木乃伊人 阅读(139) 评论(0) 推荐(0) 编辑

架构设计【电商系统】
摘要:一、架构图 二、交易核心 2.1、基础交易类型抽象 2.2、多表聚合&订单关联 2.3、支付核心 2.4、支付编排 2.5、异常处理机制 2.6、渠道网关 2.7、资金核算体系 2.8、平台统一上下文 2.9、数据一致性挑战 2.9.1、CAS 2.9.2、幂等&异常补偿 2.9.3、对账 2.9. 阅读全文

posted @ 2023-11-13 14:51 木乃伊人 阅读(31) 评论(0) 推荐(0) 编辑

微服务【最佳调用方式】
摘要:一、简介 服务调用有两种方式:RPC、Event-driven。 RPC方式,有RestFul,gRPC,Bubbo等,一般是同步的。可以马上得到结果,代码也更简单。 Event-driven方式,就是发消息方式。是松耦合方式,比紧耦合的RPC方式要优越,但RPC方式如果用在合适的场景也有它的用处。 阅读全文

posted @ 2023-11-10 10:34 木乃伊人 阅读(49) 评论(0) 推荐(0) 编辑

Service Mesh & API GateWay
摘要:一、简介 1.1、功能定位和承担职责不同。 Service Mesh:微服务的网络通信基础设施,负责(系统内部的)服务间的通讯。 API Gateway :负责将服务以API的形式暴露(给系统外部),以实现业务功能。 1.2、部署上不同 Service Mesh:部署在系统内部:因为原子微服务和组合 阅读全文

posted @ 2023-11-06 11:16 木乃伊人 阅读(23) 评论(0) 推荐(0) 编辑

缓存【分布式缓存高可用方案】
摘要:一、简介 上图所示,我们在服务层和数据库层之间增加一个缓存层,现在我们读取数据的时候,先从缓存里面读取,读不到的再去读数据库。 既然我们引入了缓存,那肯定是想更多的请求尽量落在缓存上,也就是说我们必须要关注缓存命中率,命中率越高就代表我们的后端存储就越不容易被拖垮成为性瓶颈,如果我们的缓存命中率下降 阅读全文

posted @ 2023-11-02 10:37 木乃伊人 阅读(45) 评论(0) 推荐(0) 编辑

架构设计【可扩展】
摘要:一、简介 可扩展即是通过增加相应的机器来达到抗住系统的突然流量激增的目的。 二、设计方案 2.1、存储扩展 比如订单系统,首先针对数据存储,按照基础业务进行拆分的,大体拆为用户库、运营库、权益库、基础数据库、订单库等,具体的酒店这些基础数据就放在基础数据库中,这样拆分还有个好处就是确保了故障的隔离, 阅读全文

posted @ 2023-11-01 15:02 木乃伊人 阅读(22) 评论(0) 推荐(0) 编辑

架构设计【高可用】
摘要:一、简介 高可用(HA)是系统架构设计中必须考虑的,是指系统所能提供无故障服务的一种能力。即避免因为服务器宕机导致的服务不可用的情况。 二、衡量 可用性 = 平均故障间隔/(平均故障间隔 + 故障恢复平均时间) 三、如何设计高可用 想要高可用就要避免使用单点,你想想看你的单台服务器再强应用优化的再极 阅读全文

posted @ 2023-11-01 14:49 木乃伊人 阅读(75) 评论(0) 推荐(0) 编辑

架构设计【高并发】
摘要:一、简介 高并发,即同一时刻系统能处理多少请求。 二、提高系统性能 首先该想到的是如何发挥单个服务器潜能,再考虑堆服务器。 2.1、如何知道单台服务器性能瓶颈 性能的衡量指标,在业界通常指的是响应时间或者吞吐量,但是单次的测试或者部分的测试响应时间是不足以来判断当前系统性能的好坏的,所以需要收集一段 阅读全文

posted @ 2023-11-01 14:27 木乃伊人 阅读(29) 评论(0) 推荐(0) 编辑

架构设计--基础
摘要:1、Redis是否可以实现分布式锁? 思路:Redis一般使用setnx方法,通过Redis实现锁和超时时间来控制锁的失效时间。当主节点挂掉,极端情况下,当Redis主节点挂掉,但锁还没有同步到从节点,根据哨兵机制,从节点被选举为主节点,继续提供服务,其他线程就会请求锁,出现两个线程同时拿到锁的情况 阅读全文

posted @ 2023-10-17 10:22 木乃伊人 阅读(6) 评论(0) 推荐(0) 编辑

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示