- 博客(129)
- 收藏
- 关注
原创 架构师--微服务进阶场景实战之数据一致性和数据同步
使用微服务时,很多时候需要跨多个服务去更新多个数据库的数据,架构如图13-1所示。如果业务正常运转,3个服务的数据应该分别变为a2、b2、c2,此时数据才一致。但是如果出现网络抖动、服务超负荷或者数据库超负荷等情况,整个处理链条有可能在步骤2失败,这时数据就会变成a2、b1、c1;当然也有可能在步骤3失败,最终数据就会变成a2、b2、c1。这样数据就出错了,即数据不一致。
2025-07-24 17:08:12
848
原创 架构师--基于常见组件的微服务场景实战
依旧先来看一个实际的业务场景。在笔者团队负责过的某个系统中,已经拥有了50多个服务,并且很多服务之间都有调用关系,而这些服务是使用各种语言编写的,比如Java、Go、Node.js。目前流行的Spring Cloud、Dubbo这些微服务框架都是针对Java语言的,所以没有使用它们。那么,如何配置各个服务之间的调用关系呢?下面还原一下当时的配置过程。
2025-07-23 21:24:16
960
原创 架构师--缓存场景
关于这个问题,最简单的方式是通过Logstash直接把日志文件中的数据迁移到Elasticsearch,但会有一个问题:业务侧要求存放Elasticsearch中的记录(包含城市、性别、年龄等原始数据,这些字段需要调用业务系统的数据进行抽取),而这些原始数据日志文件中并没有,所以中间需要调用业务系统来获取一些数据跟日志文件的数据合起来加工。但是相比于组合4,组合5规避了第二步删除缓存失败的问题——组合5是先删除缓存,再更新数据库,假设它的第三步“再删除缓存”失败了,也没关系,因为缓存已经删除了。
2025-07-23 18:55:23
416
原创 CG--资料分析1
o 例题:移动数据流量业务收⼊总额 45:18。3)乘法运算 01:27:45。1. 资料分析 03:10。削峰填⾕ 33:31。
2025-07-16 20:38:22
216
原创 这个方法的目的是检查一个给定的项目ID(projectId)是否在当前数据库中被使用(搜索全库)
这个方法的主要功能是projectId。它通过多步骤验证项目是否被关联到其他业务数据中,确保项目在删除或修改前未被引用。
2025-07-11 16:54:07
562
原创 系统分析师(六)-- 计算机网络
本题可根据集线器和网桥的工作原理及所属层次等知识来分析各选项。选项A选项B选项C选项D第一题,答案 B第二题 答案B本题可根据各协议的功能来判断将 IP 地址转化为 MAC 地址的协议。选项A:RARP(Reverse Address Resolution Protocol,反向地址解析协议)RARP 的功能与 ARP 相反,它是将 MAC 地址转换为 IP 地址。在一些无盘工作站等设备中,这些设备只知道自己的 MAC 地址,通过 RARP 协议可以从 RARP 服务器获取对应的 IP 地址。
2025-04-12 15:34:43
479
原创 系统分析师论文---论信息系统可行性分析
综合考虑了各公司的业务能力,我们选择了SpringCloud+zookeeper作为基础架构平台,采用Maven+Gradle的构建方式,MySql+Redis作为持久化和缓存,vue.js作为前端架构,Docker+k8s作为容器化方案,使用DevOps的持续集成模式,进行了整体平台的开发工作。在开始对采购招投标系统的可行性分析之前,首先需要明确系统的开发目标和规模。系统可行性分析在开发过程中起着至关重要的作用,它通过对业务需求、技术实现、经济效益和风险评估的全面分析,确保系统开发的合理性与可操作性。
2025-04-11 15:35:32
631
原创 系统分析师(二)--操作系统
栈指针是用来指向线程栈空间中特定位置的,不同线程的栈空间是相互独立的,所以某线程的栈指针只能由该线程自己使用,不能被其他线程共享。进程中打开的文件是由整个进程来管理的,同一进程下的各个线程都可以对这些打开的文件进行访问和操作,所以进程中打开的文件是可以被这些线程共享的。进程的代码段包含了程序的执行指令,同一进程中的所有线程都需要执行这些指令来完成相应的任务,因此进程的代码段可以被这些线程共享。综上所述,不能被这些线程共享的是该进程中某线程的栈指针,答案选C。选项C:该进程中某线程的栈指针。
2025-04-09 19:05:27
368
原创 系统分析师(一)--计算机组成与体系结构
1、从低向上讲解2、3-7 分 平均5 分,只有上午考3、和架构考察知识点基本一致4、存储系统重点 几乎每年必考5、流水线 考察交深入 超标量流水线6、可靠性:串并联系统的可靠性计算。
2025-04-09 14:42:39
700
原创 使用RocketMQ实现招投标定时开标,并解决出现的重启服务消息丢失问题
二 消费者消费的时候,判断当前时间是否在开标时间之前,如果没有,则将消息重发一次。根据消息中的tag选择不同的handler实现,先建一个虚拟类。这么做的原因是rocketMq的延迟时间有最大值的限制。一,rocketMq生产者发送消息。生产者发送消息,并且设置延迟消息。实现开标时间处理handler。在外层根据topic包一层。
2025-02-26 11:34:47
188
原创 windows系统常用命令
2、输入命令“type nul>.”创建空文件,输入命令“echo [fileContent]>.”创建费控文件夹。3.1、输入命令“xcopy D:\test\test1 d:\test\test3 /s /e”复制文件夹。mem.exe--------显示内存使用情况。Nslookup-------IP地址侦测器。regedt32-------注册表编辑器。calc-----------启动计算器。logoff---------注销命令。winmsd---------系统信息。
2025-02-03 09:58:08
257
原创 论软件需求管理及其应用
在本项目中最困难的是客户的专业程度不高,所以在需求开发的时候很多需求并没有明确提出,导致需求变成了隐形需求,例如在本项目中,系统操作界面风格,操作方式,施工项目数据的组织形式,客户并没有提出明确意见,这就要求我方在尽可能地对这些需求进行提炼,使之变成显性需求,对这部分需求我们采用原型法和用例图的方式和用户进行确认。需求变更管理(需求控制)和需求跟踪是需求管理的核心,需求变更管理是需求变更的管控,杜绝需求蔓延,需求跟踪是对需求说明书中提到的每一个需求在项目中是否完成,做到有迹可查,不会漏做、误做。
2025-01-28 10:38:13
235
原创 论需求获取方法
首先,在需求的前期阶段,因为涉及到不同部门和用户,为了能够快速全面概括需求,我们采用了自顶向下的用户访谈方式。最后,在需求的后期阶段,我们经过前两个阶段,基本完成了主要业务需求的收集,但是预应力施工中包含大量的技术参数和计算逻辑,这些技术参数是没有办法通过访谈或者联合需求计划等方式获得,并且这些参数及计算逻辑必须保证100%准确,否则极可能导致施工事故发生,所以我方采取收集资料和阅读历史文档的方式来收集整理这些技术信息,并根据收集的信息整理出技术参数及算法字典,并经甲方审核后作为需求文档的重要组成部分。
2025-01-28 10:36:48
292
原创 微服务的原则和划分
单体架构的应用,随着时间的推移,会变得越来越臃肿,越来越难以维护,适当的做“减法”,可以解决单体架构存在的这些问题。服务越小,微服务的独立性就越高,但同时微服务的数量也会增加,管理就会存在很大的问题,成为一个新的挑战。服务的增加会导致其通信量比单体架构大大增加,并且服务之间的通信可能是跨服务器与跨域的,考虑到性能、响应时间等方面,则服务间通信应采用轻量级的通信协议,因此我们采用消息通信的方式,消息格式采用Json,Json相较于xml,去掉了复杂的格式要求,提高了消息利用率,并能被多种语言支持。
2025-01-28 10:35:40
419
原创 论大数据架构
其主要的功能有两方面,一是整合批处理和加速层的数据,数据虽然通过批处理和加速层进入HBase,但是这些数据之间很可能有某些关联关系,在Hbase 存储的时候要保留这些有用的关系,例如车联网的数据虽然有实时数据,但是也有一些实时性要求不高的基础数据是通过批处理层进入,实时数据和基础数据可能要进行合并处理,服务层就可以完成这些需求。项目历时8个月,最终顺利构建了该企业的大数据平台数据湖应用,目前系统运行平稳,数据平稳有序入湖,形成了企业数据中心,为企业数据挖掘分析应用项目提供了数据支撑,获得了用户认可。
2025-01-28 10:33:38
796
原创 论软件架构评估
当然在项目实施中也存在一些不足,例如用户对系统的期望往往是什么都想要,什么都要好,初期我们对评估中的权衡点把控不足,这会导致为了满足客户而扩大项目边界,使架构变得复杂,导致开发难度增加。,经过对架构的评估,确定了系统的风险点、敏感点、权衡点和非风险点,最后以文档的形式表现。最后作为架构设计师的我描述了系统架构情况,系统采用的B/S架构,依托原有SAP系统HR模块作为系统主数据,在此基础上扩展出业务管理、决策分析、自主服务等模块。,不同的需求方基于各自的考虑都提出了各自的要求汇总出如下质量场景。
2025-01-28 10:31:32
601
原创 软件架构风格
绩效考核流程非常明显的按照一定的顺序从前向后执行程序,前个节点的数据输出,是后一个节点的数据输入,非常适合数据流风格,因此我们采用数据流风格里面的管道-过滤器风格来构建程序。需求方现有人力资源管理,缺少培训学习管理模块,各功能分散在不同系统,技术参差不齐,各个业务模块间数据共享与数据流转存在问题,且存在数据不完善、不准确的问题,对海外公司子公司HR管理支撑力度不足,给管理带来了很大的困扰。系统整体我们采用B/S架构的层次架构风格,包含数据存储层、数据访问层、业务逻辑层、表现层。提供架构级的通用解决方案,
2025-01-28 10:26:01
768
原创 动态测试-系统分析师论文
系统采用Java语言+spring 框架,因此可以采用Junit测试框架自动生成测试程序使可以减少大量编码时间,但是在模块测试时可能会需要某些外部依赖,例如分析员工技能获取蜘蛛图的模块中需要先获取员工信息才能进行执行后续分析逻辑,但是获取员工的逻辑模块还未完成,这时要完成模块测试就需要编写模拟员工数据的代码以供测试,在测试完成后要分析代码覆盖率,那些代码被执行,那些代码有问题,最后还要输出测试报告,这时候Junit 就无法胜任了。功能分解是将SRS中的每个功能加以分解,确保各个功能被全面测试。
2025-01-28 10:24:10
786
原创 论软件系统建模方法及其应用(需求分析方法)
在需求获取阶段,我们采用用户访谈、联合需求计划、问卷调查等手段初步获取了用户需求,最然这些需求是由专门的调研小组完成,但是这些获取到的需求对系统设计来讲是杂乱无章的,因此需要我们把把杂乱的无章的用户需求和期望需求转换为有序的用户需求,用例图可以很好的实现这一目标。综合使用上述模型工具的使用工,我们顺利完成分析工作,项目历时8个月,顺利上线,系统上线后公司高层可根据智能化的数据分析洞察公司人力资源情况,各级经理对人力资源看得到管得住,HR工作人员实现事找人,效率高。,为系统系统设计阶段打下了良好基础。
2025-01-28 10:21:28
148
原创 RUP 统一过程
系统共包含5个大模块,我们把每个模块视为一个SCRUM项目,也就是把SCRUM进行了嵌套使用,因此在原有SCRUM的3个角色不足以满足项目需要,我们在产品负责人、产品研发团队、流程管理员基础之上增加模块产品负责人角色,全权负责本模块开发。客户公司是一家全球化公司,公司生产的工程机械产品覆盖全球170多个国家,致力于为行业提供完整的解决方案,需求方现有人力资源管理,缺少培训学习管理模块,各功能分散在不同系统,技术参差不齐,各个业务模块间数据共享与数据流转存在问题,且存在数据不完善、不准确的问题。
2025-01-28 10:17:14
128
原创 SkyWalking介绍
在解决提报的IT性能问题时,由于缺乏系统性能监控运维的工具,导致问题排查非常困难,尤其是偶发的问题,无法进行问题复现还原,需要一套能实时监控线上系统性能的工具平台。度量(Metrics):收集并展示各种性能指标,如响应时间、吞吐量、错误率等,以图形化的方式呈现,便于用户直观地了解应用的健康状况。系统性能指标监控:收集并展示各种性能指标,如响应时间、吞吐量、错误率等,以图形化的方式呈现,便于用户直观地了解应用的健康状况。慢接口、慢sql查询:对系统慢接口、慢sql进行查询。
2025-01-25 08:32:56
839
原创 供应链平台供应商管理、登录、用户管理开发方案
2)手机号登录: 输入手机号、密码,点击‘登录’按钮,前端需调用接口通过手机号去获取登录账号信息,将获取结果和用户输入密码,调用轻骑兵原有登录接口进行登录,登录成功后可以跳转至系统内相关页面。1)Tab页:进入时默认展示‘全部’tab页数据,点击‘待回复’、‘未审查’、‘审批通过’、‘审批拒绝’、‘作废’切换至相应tab页并展示对应单据状态的数据和操作功能。5)回复:待回复、审批拒绝状态的单据,点击操作栏的‘回复’,进入回复页面,补充资质信息页面内容,执行相应操作,详情见供应商资质审查回复页处理逻辑。
2025-01-24 11:15:22
684
原创 供应链平台招投标开发方案
填写基本信息、招标行信息、供应商信息、招标小组、评标小组、附件需求清单、附件后,点击保存,保存招标项目信息,点击提交审批,点击【提交审批】,弹窗二次确认提示是否提交审批,点击【确定】,数据提交工作流审批,关闭弹窗,返回列表,点击【取消】,关闭弹窗,取消提交审批动作。点击【取消】取消删除动作,关闭弹窗。维护需要修改的信息后,点击保存将改动保存到数据库,点击提交审批,点击【提交审批】,弹窗二次确认提示是否提交审批,点击【确定】,数据提交工作流审批,关闭弹窗,返回列表,点击【取消】,关闭弹窗,取消提交审批动作。
2025-01-24 10:13:57
534
原创 供应链平台供应商质量协同开发方案
2)Tab页: 默认展示【全部】tab数据,按单据状态拆分至【新建】、【待供应商确认】、【待发货】、【待收货】、【已收货】、【待采购商确认】、【供应商已拒绝】、【已关闭】tab页面,点击状态切换相应tab页。2)Tab页: 默认展示【全部】tab数据,按单据状态拆分至【新建】、【待评分】、【部分评分】、【评分完成】、【作废】tab页面,点击状态切换相应tab页。2)Tab页: 默认展示【全部】tab数据,按单据状态拆分至【新建】、【检测中】、【检测完成】tab页面,点击状态切换相应tab页。
2025-01-24 08:36:59
601
原创 根据表结构生成controller,service,repository,domain的工具类
【代码】根据表结构生成controller,service,repository,domain的工具类。
2025-01-07 11:30:37
140
原创 论软件系统需求获取技术及应用
通过运用多种需求获取技术,包括访谈、问卷调查、观察、原型和用例分析,我们深入了解了用户需求,并将其有效地融入系统设计和开发中。虽然现场观摩能够直接观察用户的操作和反应,但往往受到时间和地点的限制,无法覆盖所有的用户群体和情境。系统分析师根据要获取的信息内容和信息来源采用不同的需求获取技术,并且熟练地在实践中运用它,进而获得用于描述系统活动的特定软件需求,构建系统开发目标和质量要求。4. 整合和确认需求: 在会议结束后,将所有收集到的需求进行整合和归纳,形成系统的总体需求清单。
2025-01-06 19:14:37
137
原创 一种主子表的update方法
getTeamDeleteIds`, `getProjectDeleteIds`, `getFileDeleteIds` 这些方法可能实现了一种逻辑,即如果新数据中不包含某个旧数据的 ID,则认为该旧数据需要删除。这个方法的核心思想是**先查询旧数据**,然后**比较旧数据与新数据**,确定哪些数据需要更新,哪些数据需要删除,最后**批量执行数据库操作**。这里将传入的子表更新参数列表转换为 Map,Map 的 Key 是子表记录的 ID,Value 是对应的更新参数。2. 将更新参数转换为数据对象。
2024-11-13 19:34:24
942
原创 MyBatis-Plus 之 typeHandler 的使用
例如当我们 某个字段存储的类型为List或者Map时,我们可以自定义一个TypeHandler,以 list 为例,我们想存储一个字段类型为 list ,在数据库中的存储的格式是 多条数据以逗号分割,当查询时会自动根据逗号分割成列表格式。如果字段需要存储为json格式,可以使用JacksonTypeHandler处理器。如果要查找json中的字段,可以在domain类里面加上虚拟字段。2、自定义 typeHandler 实现类。在domain实体类里面要加上,两个注解。在mybaits中的xml文件中。
2024-10-08 11:43:32
3066
原创 属性拷贝MapStruct
端请求通过VO对象接收,并通过DTO对象进行流转,最后转换成DO对象与DAO层进行交互,反之亦然。当业务简单的时候,可以通过手动编码getter/setter函数来复制对象属性。但是当业务变的复杂,对象属性变得很多,那么手写复制属性代码不仅十分繁琐,非常耗时间,并且还可能容易出错。为了解决这个痛点,在项目初期,项目的解决方法是随手写的转换工具函数:根据变量名进行反射,对基础类型和枚举的变量进行赋值。
2024-10-08 08:41:18
908
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人