![](https://img-blog.csdnimg.cn/ccc48d942c7841baad9af6e7d1cad4d7.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
业务.方案.架构
文章平均质量分 91
常见业务解决方案、架构。
知了一笑
积累、总结、用心记录。
展开
-
微服务中「组件」集成
在微服务工程的技术选型中,会涉及到很多组件的集成,最常用包括:缓存、消息队列、搜索、定时任务、存储等几个方面;随着系统的服务数量上升,统一管理各种组件的复杂度也会提高;原创 2023-06-19 08:26:09 · 254 阅读 · 0 评论 -
聊聊「短信」渠道的设计与实现
短信在实现的逻辑上,也遵循消息中心的基础设计,即消息生产之后,通过消息中心进行投递和消费,属于典型的生产消费模型;原创 2023-05-26 08:16:55 · 1280 阅读 · 0 评论 -
三方对接「心得」与「体会」
如果你看到这个话题,并不知道是什么意思,那么祝贺你,安安静静的当个小码农也挺好;原创 2023-03-29 08:52:27 · 271 阅读 · 0 评论 -
聊一聊系统重构
开始想聊这个话题的时候,我是打算放弃的;因为这个话题涉及范围之广,内容之多,让我犯怵;原创 2023-03-20 08:53:11 · 550 阅读 · 1 评论 -
URule规则引擎
前段时间,在做项目重构的时候,遇到很多地方需要做很多的条件判断。当然可以用很多的if-else判断去解决,但是当时也不清楚怎么回事,就像玩点别的。于是乎,就去调研了规则引擎。原创 2023-03-14 10:38:36 · 587 阅读 · 0 评论 -
分布式事务解决方案
曾几何时,知了在一家小公司做项目的时候,都是一个服务打天下,所以涉及到数据一致性的问题,都是直接用本地事务处理。原创 2023-02-15 10:37:37 · 897 阅读 · 0 评论 -
深入浅出Seata的AT模式
在Seata的AT模式中,在服务执行完成后,直接进行RM提交和资源释放,提供了对CAP理论相对平衡的解决方案,并且没有侵入业务工程;原创 2022-12-02 09:06:51 · 660 阅读 · 0 评论 -
ElasticSearch这些坑记得避开
ES南墙,建议绕开;作为最常用的搜索引擎组件,在系统架构中发挥极其重要的能力,可以极大的提升数据的加载和检索效率;原创 2022-11-04 08:37:56 · 358 阅读 · 0 评论 -
聊聊运营活动的设计与实现逻辑
活动作为运营的手段,根本目的是为了更好的连接产品和用户,所以很考验运营方案的策划,在活动的生命周期内完成对业务指标的达成,比如新用户流量,老用户唤醒等;原创 2022-10-18 08:27:52 · 424 阅读 · 0 评论 -
从SpringBoot启动,阅读源码设计
服务端开发,绕不开对Spring框架的深度学习,如果单纯站在源码阅读的角度,建议先熟读SpringBoot启动流程,然后再适当扩展其他源码块;原创 2022-10-08 08:21:46 · 652 阅读 · 0 评论 -
监控平台SkyWalking9入门实践
Skywalking是APM规范的国产开源分布式链路追踪系统,APM即应用性能管理,支持对SpringCloud微服务集成,并且无代码层面的侵入;原创 2022-09-26 08:17:10 · 1224 阅读 · 0 评论 -
AOP实现系统告警
在开发的过程中会遇到各种各样的开发问题,服务器宕机、网络抖动、代码本身的bug等等。针对代码的bug,我们可以提前预支,通过发送告警信息来警示我们去干预,尽早处理。原创 2022-09-19 08:40:10 · 750 阅读 · 0 评论 -
分布式中灰度方案实践
将版本的分支号加载到服务的元数据信息中,再结合服务名称或者IP地址,来实现对服务列表的多维度过滤,可以支撑大部分轻量级灰度策略的实现。原创 2022-09-07 08:21:18 · 202 阅读 · 0 评论 -
字典服务的设计与管理
在字典服务中提供的枚举值,根本目的是为了确保数据值的统一性,尽可能的避免同一个信息用两种方式描述。原创 2022-08-22 21:28:49 · 933 阅读 · 0 评论 -
聊聊客户档案模型的设计与管理
对于客户相关的系统来说,不管是偏向数据的CDP平台,还是偏向销售管理的CRM应用,其基础能力需要对客户的档案信息进行不断的维护,以提高客户数据的准确性。原创 2022-08-16 08:17:33 · 231 阅读 · 0 评论 -
用户身份标识与账号体系实践
用户身份的全局统一标识至关重要,用户实体在不同业务线所产生的行为数据,通过唯一序列号进行识别,这样进行用户分析时看到的画像比较全面;原创 2022-07-29 08:12:31 · 278 阅读 · 0 评论 -
分布式系统中数据存储方案实践
在项目研发的过程中,对于数据存储能力的依赖无处不在,项目初期,相比系统层面的组件选型与框架设计,由于数据体量不大,在存储管理方面通常容易被轻视,当项目发展进入到中后期阶段,系统的复杂性很大程度来源于数据层面;......原创 2022-07-18 08:12:22 · 528 阅读 · 0 评论 -
聊聊消息中心的设计与实现逻辑
消息通知的流程设计,在各个业务线中通过消息中心提供的接口方法,将不同场景下的消息内容提交到消息中心,消息中心进行统一维护管理,并根据消息的来源和去向,适配相应的推送逻辑。原创 2022-07-10 16:33:48 · 1696 阅读 · 0 评论 -
聊聊支付流程的设计与实现逻辑
通常在业务体系中,都会或多或少的涉及到支付相关的功能;对于一些经验欠缺同学来说,最紧张的就是面对这类支付结算的逻辑,因为流程中的任何细节问题,都可能引发对账异常的情况;错误发生之后,再想去修复流程,花费的时间成本又是高昂的,还牵扯错误数据的调平问题,最终很可能引发乱账算不清的结果,然后需要人工介入手动处理;......原创 2022-07-03 17:31:01 · 873 阅读 · 0 评论 -
应用配置管理,基础原理分析
在微服务的代码工程中,配置管理是一项复杂的事情,即需要做好各个环境的配置隔离措施,还需要确保生产环境的配置安全;如果划分的微服务足够的多,还要考虑配置更新时的效率;原创 2022-06-21 08:15:06 · 189 阅读 · 0 评论 -
服务管理与通信,基础原理分析
阅读源码最重要的是耐着心情慢慢看,并随手画下核心流程,实际上如果有一定的编程经验,不管是阅读什么工程的源码,只要用心去分析单点的实现原理,都算不上过度复杂。原创 2022-06-08 08:11:59 · 186 阅读 · 1 评论 -
模板化的封装,降低业务代码开发
做这些业务设计时,核心思想是:把常用的逻辑进行封装,流程设计为可配置,这样即可在一定时间内应对业务的需求和变化,降低开发成本的支出,从而使研发更侧重核心业务的管理和抽象封装等内容。...原创 2022-05-23 22:35:47 · 192 阅读 · 0 评论 -
复杂任务中,流程的解耦设计
在系统开发的过程中,必然存在耗时极高的动作,是基于请求响应模式无法解决的问题,通常会采用解耦的思维,并基于异步或者事件驱动的方式去调度整个流程的完整执行。原创 2022-05-08 18:29:38 · 1002 阅读 · 0 评论 -
微服务与领域驱动设计,架构实践总结
如果软件系统存在持续的迭代周期,那么其中业务、技术、架构的复杂性都会直线拉升,其相应的开发难度也会提高,随之而来的压力会持续在开发和测试之间来回横跳。原创 2022-04-25 08:32:21 · 377 阅读 · 0 评论 -
基于HiKariCP组件,分析连接池原理
HiKariCP作为SpringBoot2框架的默认连接池,号称是跑的最快的连接池,数据库连接池与之前两篇提到的线程池和对象池,从设计的原理上都是基于池化思想,只是在实现方式上有各自的特点;原创 2022-04-10 19:30:02 · 2643 阅读 · 0 评论 -
基于Apache组件,分析对象池原理
本文从对象池的一个简单案例切入,主要分析common-pool2组件关于:池、工厂、配置、对象管理几个角色的源码逻辑,并且参考其在Redis中的实践。原创 2022-04-06 08:49:55 · 339 阅读 · 0 评论 -
从简单代码入手,分析线程池原理
线程池中维护多个线程,当收到调度任务时可以避免创建线程直接执行,并以此降低服务资源的消耗,把相对不确定的并发任务管理在相对确定的线程池中,提高系统服务的稳定性。原创 2022-03-20 20:15:28 · 463 阅读 · 0 评论 -
微服务工程中,基础组件应用
微服务工程的架构是一项复杂和持续的过程,其中涉及到的组件也十分繁杂,本文只是选取Gateway、Nacos、Feign三个基础组件做简单的总结,在其逻辑的理解上需要围绕该组件的核心功能和项目使用的API作为切入点,时常查阅源码和官方文档。原创 2022-03-08 08:43:33 · 297 阅读 · 0 评论 -
日志管理系统,多种方式总结
好记性不如好Log。项目中日志的管理是基础功能之一,不同的用户和场景下对日志都有特定的需求,从而需要用不同的策略进行日志采集和管理,如果是在分布式的项目中,日志的体系设计更加复杂。原创 2022-02-28 08:46:32 · 3997 阅读 · 0 评论 -
分布式项目中,选型与依赖管理
很多技术栈或者开源组件的不断发展,都是为了可以更好的解决场景问题,这就需要开发人员定期关注技术的发展趋势,具备技术视野和洞察能力。原创 2022-01-28 14:35:19 · 2233 阅读 · 0 评论 -
分布式系统中,权限设计实践
采用合理的策略去管理资源的权限并不是一件简单的事,通常随着业务和系统的不断扩展,对权限体系都会带来直接的影响,所以在做结构设计时,需要相对复杂但又要避免过度复杂。分布式系统中,通常从系统层、组织架构、权限关系三个方面去考虑可行方案。...原创 2021-12-06 08:34:10 · 740 阅读 · 0 评论 -
微服务架构中,二次浅封装实践
Java分布式系统中,微服务基础组件(Nacos、Feign、Gateway、Seata)等,系统中间件(Quartz、Redis、Kafka、ElasticSearch,Logstash)等,对常用功能、配置、API等,进行二次浅封装并统一集成管理,以满足日常开发中基础环境搭建与临时工具的快速实现。组件封装的应用案例;常用技术组件二次封装;...原创 2021-11-21 15:10:32 · 2698 阅读 · 0 评论 -
分布式服务下,消息中间件改造
在系统开发初期,很容易出现这样一种情况不同业务线上开发人员,因为技术栈和版本时间的影响,在选型的时候会优先使用自己熟悉的,例如MQ中间件常用的Kafka、Rocket、Rabbit等,这样很容易忽略各个项目之间的组件差异问题;在系统开发中后期,业务相对稳定之后,通常都会对资源占用较高的模块逐步重构,公共服务进行整合管理,从而使系统更具有整体性,在这个过程中,解决不同项目的中间件差异通常首当其冲,例如常见的缓存中心,MQ消息管理等;...原创 2021-09-23 08:19:59 · 241 阅读 · 0 评论 -
架构设计:数据服务系统0到1落地实现方案
数据服务通常有很多种业务模式,也就导致系统的架构与业务都会很复杂,不同的业务都具有自身的能力和复杂度,数据管理本身就是一件不容易的事情,所以在系统架构初期都会考虑服务能力的业务场景API服务基于Http模式的数据服务,通过请求获取数据,例如风控模型,评分,反欺诈等各种业务;平台服务综合性的服务能力集成系统,客户的自定义服务需求很低,具有完整流程的数据服务能力,例如自动化数字营销平台,提供营销的全流程管理能力;采集服务。...原创 2021-02-24 07:58:24 · 727 阅读 · 1 评论 -
中间件:ElasticSearch组件RestHighLevelClient用法详解
RestHighLevelClient的API作为ElasticSearch备受推荐的客户端组件,其封装系统操作ES的方法,包括索引结构管理,数据增删改查管理,常用查询方法,并且可以结合原生ES查询原生语法,功能十分强大。在使用RestHighLevelClient的语法时,通常涉及上面几个方面,在掌握基础用法之上可以根据业务特点进行一些自定义封装,这样可以更优雅的解决业务需求。...原创 2021-01-25 08:11:50 · 8256 阅读 · 2 评论 -
数据分析:复杂业务场景下,量化评估流程
在编程体系中有很多复杂的业务是很难理解的,但是又需要做一个量化分析,给业务人员或者运营,或者用户一个参考标准,例如常见指数,芝麻分数,店铺等级,这类业务评定标准非常复杂,因为影响结果的因素很多。在多个维度的业务考量模型中,有一个核心概念叫做权重,指某一因素或指标相对于某一事物的重要程度,其不同于一般的比重,体现的不仅仅是某一因素或指标所占的百分比,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性。通常情况下每个维度的权重在0-1之间,所有维度的权重之和为1。...原创 2020-12-02 21:52:02 · 1073 阅读 · 1 评论 -
架构设计:服务自动化部署和管理流程
从常规分布式架构系统来说,划分出十来个独立的微服务模块是很常见的,然后不同的开发人员分工几个服务块,负责日常开发和维护,微服务之间会出现版本差异也是自然的。例如用户服务需要开发版本为7.0,其他服务可能高于这个版本或者低于这个版本,所以对服务发布这块做持续集成就很有必要。现在比较通用的服务自动发布和管理的技术栈Jenkins持续集成工具、Docker容器、K8S容器管理。...原创 2020-11-25 23:14:18 · 487 阅读 · 2 评论 -
架构设计:微服务模式下,实现灰度发布模式
在灰度规则中,会读取下次请求的服务列表,根据版本号参数规则,选中路由的服务。配置版本号,区分灰度版本和默认正常版本;自定义拦截器,管理版本号或其他标识参数在请求中传递;自定义服务选中策略,基于版本标识路由服务;如果灰度服务不存在,则基于规则选中默认服务;...原创 2020-11-20 08:26:28 · 1199 阅读 · 0 评论 -
架构设计:分布式结构下,服务部署发布
分布式系统架构下,服务发布是一件很麻烦的事情,特别是在构建自动发布流程和灰度测试的策略两个核心方面。通常情况下如果不涉及数据层面的灰度流程,服务可以灰度上线,或者滚动上线,这两种方式很常用;如果涉及到数据灰度,则可能需要中间服务做不同版本数据之间追平,或者停机维护一次性处理好数据和上线问题,不过后面这种方式风险较大。...原创 2020-11-14 15:35:16 · 654 阅读 · 0 评论 -
编码风格:Mvc模式下SSM环境,代码分层管理
例如常见的list接口,list通常都有会按条件加载的search机制,而且搜索的判断条件很复杂,建议分为两个接口,从实际考虑,大部分场景下都是只使用list接口,很少使用search搜索。通常情况业务层是偏复杂的,如果想关快速理解业务层,可以对复杂的业务方法,在提供一个返参构建的方法,用来处理服务层要向控制层回传的参数,这样可以让重度的服务层方法变的清晰。针对业务层的需要,提供相应的数据查询方法,只处理与数据库交互的逻辑,避免出现业务逻辑,尤其在分布式架构下,不同服务的数据查询和组装,不应该出现在该层。.原创 2020-11-09 23:27:52 · 243 阅读 · 0 评论