- 博客(28)
- 收藏
- 关注
原创 RocketMQ
临时topic队列扩容,并提高消费者能力,但是如果增加Consumer数量,但是堆积的topic里面的message queue数量固定,过多的consumer不能分配到message。编写临时处理分发程序,从旧topic快速读取到临时新topic中,新topic的queue数量扩容多倍,然后再启动更多consumer进行在临时新的topic里消费。投递的日志需要保存,关键字段,投递时间、投递状态、重试次数、请求体、响应体。机器断电重启:异步刷盘,消息丢失;接口幂等性保障,消费端处理业务消息要保持幂等性。
2024-04-09 21:12:14
779
原创 skywalking 分布式链路追踪
服务(Service)比如商品微服务实例(Instance)比如 机器1(192.12.41.4)端点(Endpoint)比如商品微服务对外提供的接口 /api/v1/product/list,就是端点用户的满意程度 Service Apdex全称 Application Performance Index,最大值就是 1, 是一个不断优化的方向分3个指标,T 值代表着用户对应用性能满意的响应时间界限或者说是“门槛”,假如T是0.5秒。
2024-01-12 20:59:31
1123
原创 clickHouse
列式存储ClickHouse的由来和应用场景俄罗斯Yandex在2016年开源,使用C++编写的列式存储数据库,近几年在OLAP领域大范围应用GitHub:特点和应用场景不依赖Hadoop 生态、安装和维护简单擅长对列的聚合、计数等统计操作性能强劲对列存储和压缩的采用更好的算法,更好节省成本拓展性强,在生产中经过实战测试,从单服务器部署到具有数千个节点的集群的线性水平可扩展性具有企业级安全功能和故障安全机制,可防止数据因应用程序错误和人为错误而损坏支持主流的大部分SQL语法和函数。
2024-01-06 22:02:44
962
原创 Kafka
一、简介Kafka是最初由Linkedin公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目,也是一个开源【分布式流处理平台】,由Scala和Java编写,(也当做MQ系统,但不是纯粹的消息系统),一种高吞吐量的分布式流处理平台,它可以处理消费者在网站中的所有动作流数据。比如 网页浏览,搜索和其他用户的行为等,应用于大数据实时处理领域特点高吞吐量、低延迟: 每秒可以处理几十万条消息高并发:几千个客户端同时读写。
2023-12-26 19:44:29
975
原创 XXL-JOB分布式调度
这个是阿里早期开源的分布式任务调度系统,使用的是timer而不是线程池执行任务调度,使用timer在处理异常的时候是有缺陷的,但TBSchedule的作业类型比较单一,文档也缺失得比较严重。ScheduledExecutorService是基于线程池来进行设计的定时任务类,在这里每个调度的任务都会分配到线程池里的一个线程去执行该任务,并发执行,互不影响。xxl_job_info:调度扩展信息表,主要是用于保存xxl-job的调度任务的扩展信息,比如说像任务分组、任务名、机器的地址等等。
2023-12-19 16:34:41
895
原创 分库分表之Sharding-JDBC
需求:商品表字段太多,每个字段访问频次不⼀样,浪费了IO资源,需要进⾏优化也就是“大表拆小表”,基于列字段进行的拆分原则⼀般是表中的字段较多,将不常⽤的或者数据较大,长度较长的拆分到“扩展表 如text类型字段访问频次低、字段⼤的商品描述信息单独存放在⼀张表中,访 问频次较⾼的商品基本信息单独放在⼀张表中垂直拆分原则把不常用的字段单独放在⼀张表;把text,blob等大字段拆分出来放在附表中;业务经常组合查询的列放在⼀张表技术负责人前瞻性思维需要提前考虑系统⼀年到两年左右的业务增⻓情况。
2023-12-06 19:49:25
1630
原创 leader方法论
AARRR是Acquisition、Activation、Retention、Revenue、Referral 五个单词的缩写,对应用户生命周期中的5个重要环节。官方:用来确定企业自身的竞争优势、劣势、外部市场的机会和威胁,从而将公司的战略与公司内部资源、外部环境有机地结合起来的一种科学的分析方法。指的是政治(Political)、经济(Economic)、社会(Social)和技术(Technological)威胁:项目的规范机制没有建立、项目的核心难点没有攻破、加班比较多(个人外部)
2023-12-03 10:19:59
1193
原创 RabbitMQ
MQTT:消息队列遥测传输(Message Queueing Telemetry Transport),一种协议,内存占用低,不支持长周期存储和转发,不允许分段消息(很难发送长消息),不安全建立连接,仅适用于性能结算不高的小型设备,例如扫地机器人,智能家具等,主要用于物联网(IOT)生产者投递消息后,如果Broker收到消息后,会给生产者⼀个ACK。开启消息确认机制以后,保证了消息的准确送达,但由于频繁的确认交互,rabbitmq 整体效率变低,吞吐量下降严重,不是非常重要的消息不建议用消息确认机制。
2023-11-13 16:11:16
228
原创 Docker
什么是docker一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口;使用go语言编写,在LCX(linux容器)基础上进行的封装,开箱即用,快速部署,可移植性强,环境隔离,简单来说分三点:1)就是可以快速部署启动应用2)实现虚拟化,完整资源隔离。
2023-11-06 15:34:48
56
原创 状态设计模式(行为型设计模式)
一、状态设计模式简介状态设计模式(State Pattern)对象的⾏为依赖于它的状态(属性),并且可以根据它的状态改变⽽改变它的相关⾏为 ,属于⾏为型模式 允许⼀个对象在其内部状态改变时改变它的⾏为 状态模式是策略模式的孪⽣兄弟,它们的UML图是⼀样的,但实际上解决的是不同情况的两种场景问题 ⼯作中⽤的不多,基本策略模式⽐较多应用场景⼀个对象的⾏为取决于它的状态, 并且它必须在运⾏时刻根据状态改变它的⾏为 代码中包含⼤量与对象状态有关的条件语句 ,⽐如⼀个 操作中含有庞⼤的多分⽀的条
2021-12-03 17:50:37
549
原创 备忘录设计模式(行为型设计模式)
一、备忘录设计模式jianjie备忘录设计模式(Memento Pattern)在不破坏封闭的前提下,捕获⼀个对象的内部状态,保存对象的某个状态,以便在适当的时候恢复对象,⼜叫做快照模式,属于⾏为模式 备忘录模式实现的⽅式需要保证被保存的对象状态不能被对象从外部访问应用场景玩游戏的时候肯定有存档功能,下⼀次登录游戏时可以从上次退出的地⽅继续游戏 棋盘类游戏的悔棋、数据库事务回滚 需要记录⼀个对象的内部状态时,为了允许⽤户取消不确定或者错误的操作,能够恢复到原先的状态 提供⼀个可回滚的操
2021-12-03 17:04:56
2485
原创 迭代器设计模式(行为型设计模式)
一、迭代器设计模式简介迭代器设计模式(Iterator Pattern)提供⼀种⽅法顺序访问⼀个聚合对象中各个元素, ⽽⼜⽆须暴露该对象的内部实现,属于⾏为型模式 应该是java中应⽤最多的设计模式之⼀应用场景⼀般来说,迭代器模式是与集合是共存的,只要实现⼀个集合,就需要同时提供这个集合的迭代器,就像java中的Collection,List、Set、Map等 都有自己的迭代器JAVA中的iterator迭代器角色抽象容器(Aggregate):提供创建具体迭代器⻆⾊的接⼝,⼀般是接⼝,
2021-12-03 16:00:55
126
原创 命令设计模式(行为型设计模式)
一、命令设计模式简介命令设计模式(Command Pattern)请求以命令的形式包裹在对象中,并传给调⽤对象。调用对象寻找可以处理该命令的对象,并把该命令传给相应的对象执⾏命令,属于行为型模式 命令模式是⼀种特殊的策略模式,体现的是多个策略执⾏的问题,⽽不是选择的问题应用场景只要是你认为是命令的地⽅,就可以采⽤命令模式 日常每个界⾯、按钮、键盘 事件操作都是命令设计模 角色抽象命令(Command):需要执⾏的所有命令都在这⾥声明 具体命令(ConcreteCommand)...
2021-12-03 15:25:20
118
原创 责任链设计模式(行为型设计模式)
责任链设计模式(Chain of Responsibility Pattern)客户端发出⼀个请求,链上的对象都有机会来处理这⼀请求,⽽客户端不需要知道谁是具体的处理对象 让多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系,将这个对象连成⼀条调⽤链,并沿着这条链传递该请求,直到有⼀个对象处理它才终⽌ 有两个核心行为:⼀是处理请求,⼆是将请求传递到下⼀节点应用场景Apache Tomcat 对 Encoding 编码处理的处理, SpringBoot⾥⾯的拦截器、过滤器链 在请
2021-12-02 19:56:54
93
原创 观察者设计模式(行为型设计模式)
一、观察者设计模式简介观察者模式(Observer)定义对象间⼀种⼀对多的依赖关系,使得每当⼀个对象改变状态,则所有依赖于它的对象都会得到通知并⾃动更新,也叫做发布订阅模式Publish/Subscribe,属于行为型模式应用场景消息通知⾥⾯:邮件通知、⼴播通知、微信朋友圈、微博私信等,就是监听观察事件 当⼀个对象的改变需要同时改变其它对象,且它不知道具体有多少对象有待改变的时候,考虑使⽤观察者模式角色Subject主题:持有多个观察者对象的引⽤,抽象主题提供了⼀个接⼝可以增加和删..
2021-12-02 16:21:19
316
原创 模板方法设计模式(行为型设计模式)
一、模板方法设计模式简介模板方法模式(Template Method)定义⼀个操作中的算法⻣架,将算法的⼀些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤,属于行为型模式应用创景javaweb⾥⾯的Servlet,HttpService类提供了⼀个 service()⽅法 有多个⼦类共有逻辑相同的⽅法,可以考虑作为模板⽅法 设计⼀个系统时知道了算法所需的关键步骤,且确定了这些步骤的执⾏顺序,但某些步骤的具体实现还未知, 可以延迟到子类进⾏完成角色...
2021-12-02 15:47:48
199
原创 策略设计模式(行为型设计模式)
一、策略设计模式简介策略模式(Strategy Pattern)定义⼀系列的算法,把它们⼀个个封装起来, 并且使它们可相互替换 淘宝天猫双⼗⼀,正在搞活动有打折的、有满减的、有返利的等等,这些算法只是⼀种策略,并且是随时都可 能互相替换的, 我们就可以定义⼀组算法,将每个算法都封装起来,并且使它们之间可以互换应用场景计划外出旅游,可以选择骑⾃⾏⻋、坐汽⻋、⻜机等, 每⼀种旅⾏⽅式都是⼀个策略 如果在⼀个系统⾥⾯有许多类,它们之间的区别仅在于它们的⾏为,那么可以使⽤策略模式 不希望暴露复.
2021-12-02 15:16:56
88
原创 享元设计模式(结构型设计模式)
一、享元设计模式简介享元设计模式(Flyweight Pattern)主要⽤于减少创建对象的数量,以减少内存占⽤和提⾼性能, 它提供了减少对象数量从⽽改善应⽤所需的对象结构的⽅式。 享元模式尝试重⽤现有的同类对象,如果未找到匹配的对象,则创建新对象应用场景JAVA 中的 String,如果字符串常量池⾥有则返回,如果没有则创建⼀个字符串保存在字符串常量池⾥⾯ 数据库连接池、线程池等 如果系统有⼤量相似对象,或者需要⽤需要缓冲池的时候可以使⽤享元设计模式,也就是⼤家说的池化技术 如果发.
2021-12-01 20:28:59
78
原创 外观设计模式(结构型设计模式)
一、外观设计模式的简介外观设计模式 Facade Pattern门面模式,隐藏系统的复杂性,并向客户端提供了⼀个 客户端可以访问系统的接⼝ 定义了⼀个⾼层接⼝,这个接⼝使得这系统更加容易使⽤应用场景各种第三⽅SDK⼤多会使⽤外观模式,通过⼀个外观 类,也就是整个系统的接⼝只有⼀个统⼀的⾼层接⼝, 这对⽤户屏蔽很多实现细节,外观模式经常⽤在封装API的常⽤⼿段 对于复杂难以维护的⽼系统进⾏拓展,可以使⽤外观设计模式 需要对⼀个复杂的模块或⼦系统提供⼀个外界访问的接⼝,外界对⼦系统的访问..
2021-12-01 19:39:04
190
原创 代理设计模式(结构型设计模式)
一、代理设计模式简介代理设计模式(Proxy Pattern)为其他对象提供⼀种代理以控制对这个对象的访问,属于结构型模式。 客户端并不直接调⽤实际的对象,⽽是通过调⽤代理, 来间接的调⽤实际的对象应用场景各⼤数码专营店,代理⼚商进⾏销售对应的产品,代理商持有真正的授权代理书 客户端不想直接访问实际的对象,或者访问实际的对象 存在困难,通过⼀个代理对象来完成间接的访问 想在访问⼀个类时做⼀些控制,或者增强功能角色Subject: 抽象接⼝,真实对象和代理对象都要实现的⼀个 抽象接.
2021-12-01 15:54:29
311
原创 装饰者设计模式(结构型设计模式)
一、装饰者设计模式简介装饰器设计模式(Decorator Pattern)也叫包装设计模式,属于结构型模式,它是作为现有的类的⼀个包装,允许向⼀个现有的对象添加新的功能, 同时⼜不改变其结构给对象增加功能 ⼀般两种⽅式、继承或关联组合,将⼀个类的对象嵌⼊另⼀个对象中,由另⼀个对象来决定是否调⽤嵌⼊对象的行为来增强功能,这个就是装饰器模式,比继承模式更加灵活应用场景去4s店买车,一个车型又不同的配置,每个配置最后搭配有不同的价格,所谓的低配、中配、高配都是由不同的小组件给原有基本汽车装饰起来.
2021-12-01 15:31:21
196
原创 组合设计模式(结构型设计模式)
一、组合设计模式简介组合设计模式又称部分整体模式,将对象组合成树形结构以表示“部分-整体”的层次结构,可以更好的实现管理操作组合模式使得⽤户可以使⽤⼀致的⽅法操作单个对象和组合对象部分-整体对象的基本操作多数是⼀样的,但是应该还会有不⼀样的地方核心:组合模式可以使⽤⼀棵树来表示应用场景银⾏总⾏,总⾏有前台、后勤、网络部⻔等,辖区下还 有地⽅分⾏,也有前台、后勤、⽹络部⻔,最⼩的分⾏就没有⼦分⾏了 公司也是,总公司下有⼦公司,每个公司⼤部分的部⻔都类似 ⽂件夹和⽂件,都有增加、删除等api,
2021-11-30 19:27:10
781
原创 桥接设计模式(结构型设计模式)
一、桥接设计模式简介桥接设计模式适配器模式类似,包括以后经常会遇到意思接近⼀样的设计模式,因为⼤神往往就是多个模式混⽤,且根据不 同的场景进⾏搭配,桥接设计模式也是结构型模式将抽象部分与实现部分分离,使它们都可以独立的变化通俗来说,是通过组合来桥接其它的行为或维度应用场景系统需要在构件的抽象化⻆⾊和具体化⻆⾊之间增加更多的灵活性不想使⽤继承导致系统类的个数急剧增加的系统有时候⼀个类,可能会拥有多个变化维度,比如手机, 有不同的颜色和品牌,可以使⽤继承组合的⽅式进⾏开发,假如维度很多,就容易出现
2021-11-30 19:15:48
90
原创 适配器模式(结构型设计模式)
一、适配器设计模式简介适配器模式(Adapter Pattern)是作为两个不兼容的接⼝之间的桥梁,属于结构型模式适配器模式使得原本由于接⼝不兼容⽽不能⼀起⼯作的那些类可以⼀起⼯作常见的几类适配器类的适配器模式想将⼀个类转换成满⾜另⼀个新接⼝的类时,可以使⽤类的适配器模式,创建⼀个新类,继承原有的类,实现新的接⼝即可对象的适配器模式想将⼀个对象转换成满⾜另⼀个新接⼝的对象时,可以创建⼀个适配器类,持有原类的⼀个实例,在适...
2021-11-30 19:04:42
214
原创 建造者模式(创建型设计模式)
一、建造者模式介绍和应用场景建造者模式(Builder Pattern)使⽤多个简单的对象⼀步⼀步构建成⼀个复杂的对象, 将⼀个复杂对象的构建与它的表示分离,使得同样的构 建过程可以创建不同的表示 允许⽤户只通过指定复杂对象的类型和内容就可以构建它们,不需要知道内部的具体构建细节核心组成Builder:抽象建造者,定义多个通⽤⽅法和构建⽅法 ConcreteBuilder:具体建造者,可以有多个 Director:指挥者,控制整个组合过程,将需求交给建造者,由建造者去创建对象 Prod..
2021-11-26 20:41:41
78
原创 原型设计模式(创建型设计模式)
一、原型设计模式介绍和应用场景原型设计模式Prototype是⼀种对象创建型模式,使⽤原型实例指定创建对象的种类,并且通过拷⻉这些原型创建新的对象,主要⽤于创建重复的对象,同时⼜能保证性能 工作原理是将⼀个原型对象传给那个要发动创建的对 象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程 应该是最简单的设计模式了,实现⼀个接口,重写⼀个方法即完成了原型模式核心组成Prototype: 声明克隆⽅法的接⼝,是所有具体原型类的公共⽗类,Cloneable接⼝ ConcreteP.
2021-11-26 19:35:12
347
原创 工厂设计模式(创建型设计模式)
一、工厂模式的简介跟应用它提供了⼀种创建对象的最佳⽅式,我们在创建对象时 不会对客户端暴露创建逻辑,并且是通过使⽤⼀个共同 的接⼝来指向新创建的对象工厂模式三种实现方法简单⼯⼚模式:通过传⼊相关的类型来返回相应的类,这种⽅式⽐较单 ⼀,可扩展性相对较差; ⼯⼚⽅法模式:通过实现类实现相应的⽅法来决定相应的返回结果,这种⽅式的可扩展性⽐较强; 抽象⼯⼚模式:基于上述两种模式的拓展,且⽀持细化产品;应用场景解耦:分离职责,把复杂对象的创建和使⽤的过程分开 复⽤代码 降低维护成本...
2021-11-26 14:53:46
191
原创 单例设计模式(创建型设计模式)
一、什么是单例模式单例模式就是单例对象的类只能允许一个实例存在 通过单例模式可以保证系统中,应⽤该模式的类只有⼀ 个对象实例二、使⽤场景业务系统全局只需要⼀个对象实例,⽐如发号器、 redis连接对象等 Spring IOC容器中的bean默认就是单例 spring boot 中的controller、service、dao层中通过 @autowire的依赖注⼊对象默认都是单例的 需要频繁实例化然后销毁的对象 创建对象时耗时过多或者耗资源过多,但又经常用到的对象三、单例模式的实现..
2021-11-25 17:57:59
77
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人