摘要: 设计模式的六大原则 开闭原则:对扩展开放,对修改关闭,多使用抽象类和接口。 里氏替换原则:基类可以被子类替换,使用抽象类继承,不使用具体类继承。 依赖倒转原则:要依赖于抽象,不要依赖于具体,针对接口编程,不针对实现编程。 接口隔离原则:使用多个隔离的接口,比使用单个接口好,建立最小的接口。 迪米特法 阅读全文
posted @ 2023-04-05 21:07 残城碎梦 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 我们的系统都是分布式部署的,日常开发中,秒杀下单、抢购商品等等业务场景,为了防止库存超卖,都需要用到分布式锁。 分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。 业界流行的分 阅读全文
posted @ 2023-04-05 20:36 残城碎梦 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 日常开发中,我们需要对系统中的各种数据使用 ID 唯一表示,比如用户 ID 对应且仅对应一个人,商品 ID 对应且仅对应一件商品,订单 ID 对应且仅对应一个订单。 分布式 ID 是分布式系统下的 ID。在分库分表的架构下,尤其常见。 分库之后, 数据遍布在不同服务器上的数据库,数据库的自增主键已经 阅读全文
posted @ 2023-04-05 20:32 残城碎梦 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 服务注册中心组件 Eureka Eureka遵守的是AP原则。 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。 Eureka 交互流程 Eureka 包含 阅读全文
posted @ 2023-04-05 19:29 残城碎梦 阅读(125) 评论(0) 推荐(0) 编辑
摘要: ZooKeeper 是什么? ZooKeeper 是一个分布式协调服务,为我们提供了高可用、高性能、稳定的分布式数据一致性解决方案。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。这些 阅读全文
posted @ 2023-04-05 16:16 残城碎梦 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 说说TCP的三次握手 假设发送端为客户端,接收端为服务端。开始时客户端和服务端的状态都是CLOSED。 (1)第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x,客户端向服务端发送的字段中包含标志位SYN=1,序列号seq=x。第一次握手前客户端的状态为CLOSED,第一次 阅读全文
posted @ 2023-04-05 14:47 残城碎梦 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 为什么要使用消息队列? 主要有三点原因:解耦、异步、削峰。 (1)解耦。比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单操作失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化,等库存系统恢复后,就可以正常消费减 阅读全文
posted @ 2023-04-05 12:17 残城碎梦 阅读(254) 评论(0) 推荐(1) 编辑