自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(197)
  • 收藏
  • 关注

原创 运行性模型/架构资产复用/架构验收/架构设计误区

准备好分解的部署单元 摆放到指定位置(地理位置、节点位置)更换视角,调整组合方式(应用、技术 逻辑 物理)系统监控 可用性 安全性 性能 容量规划 服务治理 组织架构 采购与外包 软件包 产品选择。问题 影响项目进展的问题 影响产品验收的问题。单元测试、集成测试、系统测试、用户验收测试。风险 已知风险是否环节或规避、发现新的风险。假设 前提假设是否正确 引入新的假设条件。依赖 业务和应用依赖 IT技术依赖。架构:参考架构 架构积木。工具:IDE CICD。架构验证工件 RAID。

2024-03-23 14:05:51 205

原创 功能性模型

输出:时序图/模块交互图(模块的交互、行为的先后)中间过程:鲁棒图、实体关系ER图。二、整体架构草图AOD。每个模块是自建还是买呢。三、定义模块静态关系。

2024-03-23 11:48:00 188

原创 需求分析的过程

逻辑:技术定性 产品未定型 比如spring boot+MongoDB 使用阿里的docker 还是AWS的docker 这就是产品未定。所有的视图都可以归为六类:应用 技术 功能 运行 逻辑 物理。技术:支撑业务的基础架构(中间件、数据库、AAA库)质量:管理10个小动物,分割管理,洗澡水1分钟完成。应用:java、python 应用代码实现的功能。4.架构设计核心方法论:架构立方体。功能:who how what。重点是功能和运行会有很多工件。运行:where when。限制:成本小于1000元。

2024-03-23 11:17:10 293

原创 架构的基本要素

架构设计目标 Do the right thing right 做对的事情 把对的事情做正确。架构设计方法 架构立方体:应用技术 功能运行 逻辑物理。架构设计输出 可落地的架构和系统。需要解决的目标 功能性需求。1.架构设计如何规划?现有的手段 资产和技术。实现的自由度 限制。

2024-03-23 09:38:43 428 1

原创 架构之伸缩性维度

热点业务:支付、下单、添加购物车、商品详情页、搜索。无状态应用弹性伸缩:无服务器化Serverless。serverless实现:观察 决策 执行。热点数据:秒杀产品、动态数据、静态数据。Autoscaler 自动伸缩。cronHPA 定时扩展。

2024-03-22 22:47:17 197 1

原创 架构之安全性维度

通信安全:网络攻击:DDOS拒绝服务、DNS劫持、重放攻击、ARP地址解析欺骗 最强之盾:网络防御 WAF应用防火墙 IDS/IPS入侵检测 VPN/IPSEC安全通道加密 PGP邮件加密 TLS HTTP隧道加密。身份安全:Authentication认证 Authorization授权:MAC、RBAC、oauth第三方授权 Audit审计。安全评估方法:安全测试: SAST静态测试、 IAST交互测试 安全扫描。软件安全:操作系统安全:病毒、蠕虫、特洛伊木马、零日攻击、补丁。

2024-03-22 22:07:13 257

原创 高可用、逻辑保护、容灾、多活、妥协、流程

网络双活:将同一个网络扩展到多个数据中心,并且实现服务和应用的虚拟化数据中心互联技术:随着高可用远程集群技术以及虚拟机迁移技术,在数据中心容灾以及计算资源调配方面的广泛应用,在数据中心间需要大二层网络连接。异地双活:异地之间采用双活目前不够现实,因为尚无很好的技术能实现远距离的实时数据同步,当两个站点距离超过100公里以上,数据同步只能采用数据异步的存储数据复制方式。同城双活:用户所有的业务系统同时在同城的两个数据中心运行,同时为用户提供服务,当某个数据中心的应用系统出问题时,有另。

2024-03-21 22:41:26 334

原创 架构性能关注点

目标设定:业务指标 (UV PV 交易量)、系统目标(cpu 内存 网络 磁盘)、应用目标(TPS QPS Session 并发数)测试手段:标准(历史基准),环境(QA、准生产、生产),定义(测试案例)、执行(自动化),分析(统计),报告(录入),测试目标:正常运行压力下的响应时间、资源利用率、稳定性。z轴扩展:延时降低、TPS/QPS明显提升。减少等待:磁盘,SQL、API、URL。规划方法:容量评估方法(基线、水位)写缓存:网络缓存、应用缓存、对象缓存。Y轴扩展:微服务解耦 Y轴扩展更随意。

2024-03-20 23:46:26 215

原创 架构扩展性

架构扩展性:应用扩展 数据扩展 组织扩展 流程扩展。应用:无状态、容器化、Serverless无服务器化。有状态应用,状态剥离(比如Session的处理)支持各种key:user spu sku。Nosql 多shard/chunk分片。对于无状态的应用,多节点克隆复制。数据:多副本、读写分离,冷热分离。传统SQL,读写分离,1写多读。多:分布式架构设计、横向扩展。配合应用和数据的Y轴扩展。中间件:缓存、最终一致性。工具:SQL CDC技术。CMMI软件成熟度模型。快:X轴无脑克隆和复制。

2024-03-19 22:42:45 357

原创 EDA事件驱动架构/BASE理论/幂等性理论

创建订单,只有创建的时候才生成订单号,每一次都是不用的订单号,唯一约束无法解决问题,这时候分布式锁+隐藏表单。或者重试机制、补偿机制等也需要保证幂等。并发修改:分布式锁、DB锁(select * fron table for update)EDA驱动的特定:异步处理、跨平台/语言通信、应用解耦、可靠投递、最终一致性。更新:个人信息修改 乐观锁控制(version)基本可用 Basically Available。新增:比如账号注册:业务唯一约束。软状态 Soft State。

2024-03-17 17:12:20 431

原创 如何设计网关层限流和分布式限流

分布式限流的四象限:访问频率、IP连接数、黑白名单、传输速率。业务层:业务网关Gateway/zuul 限流组件。网关层:nginx Lua 阿里系mtop。微服务限流的特点:中心化。限流应用点:网关层、业务层。限流统一返回:504。

2024-03-17 16:35:22 344

原创 微服务的无状态、版本控制向后兼容、流量整型

单机Session 如果代码逻辑依赖SessIon中的某个kv 就是有状态的。controller接口使用v1 v2 v3标记 某个功能的扩展时使用。如果将Session中的kv放在 redis 就成了无状态服务。如果是RPC 就用 version属性来控制。还可以用请求头参数在网关层转到对应版本的接口。容量满了令牌就被流放了 相当于直接返回请求。配置管理有状态, 不同配置文件参数值不同。不同接口令牌数不同,令牌越多 权益越重。桶就是一个冷宫 桶是有容量。令牌是算法生成的通行证。令牌是从桶里拿出来的。

2024-03-17 16:28:33 609

原创 如何从不同维度对服务进行拆分

不可缺少的环节 如果缺少了就无法形成完整的服务。低频突发流量 如秒杀 批量上架。如图营销计算就是一个服务业务。4.用户群体拆分 2C 2B。高频高并发 商品详情页。3.领域模型拆分DDD。

2024-03-17 11:53:41 359

原创 如何保持简单轻量的架构

(do not repeat yourself )减少信息的重复—抽取公共的组件包。(you ain not gonna nedd it ) 过度设计。工具类 GuaVa lombok。不要过度设计 用不到技术的就不要使用。

2024-03-16 22:37:04 361

原创 高可用系统有哪些设计原则

业务层限流 本地限流 gua 分布式限流 sentinel。主链路压力过大的时候可以将非主链路的机器给主链路的应用用上。被动降级:超时降级 异常降级 失败率 熔断保护。应用层 Nginx + 服务网关。弹性伸缩—K8S+docker。nginx的limit模块。虚IP HaProxy。DNS端 域名切换入口。Clien端流量调度。版本控制 配置中心。

2024-03-16 21:25:24 699

原创 如何设计高并发系统

复杂的业务,把不相关的用异步执行,这样的话有几个问题:1.第一个一步失败了,本来不用执行后面的逻辑,现在改成异步,无法。控制,增加数据库的压力。性能本来就是资源换时间嘛,无可厚非2.导致系统QPS的上升,这个也没办法,为了性能,分秒必争。

2024-03-16 21:07:26 386

原创 组合和聚合复用原则

接着我们定义了一个飞行器组合类FlyingMachine,通过组合的方式将飞行器接口作为成员变量,实现了复用的目的。通过合成聚合复用原则,我们可以更灵活地组合已有的对象,而不是通过继承的方式来实现复用,从而降低类与类之间的耦合度,提高系统的灵活性。继承用的好,代码可扩展性好,用不好,就会出现类爆炸,继承破坏了开闭原则,父类发生变化,子类也要改变。组合一般是类的组合,是类的复用方式之一,优先于继承。使用组合模式,很清晰的将分层的数据进行组织,以后遇到类似这样的数据,可以采用这个方式处理。

2024-03-16 20:53:45 391

原创 架构师六大派Solid

teacherList().sorted(xxx).findFir System.out.println(“最风骚的老师配最风骚的课程 ” + } } public class Architect { public void chatWithImoocGirl(IMoocGirl girl) {有一波未来的架构师们(对没错就是你们)来慕课网上学习,学习何等枯燥,得找个有意思的老师 跟着学才学的下去,同学们就跟慕课的小姐姐打听哪个老师。抽象的支付类,然后让各种具体的支付方式继承这个类,并实现其抽象方法。

2024-03-16 20:28:24 882

原创 如何规划面向未来的架构?

未来业务容量: 稳定性基线 余量规划(规划多10%的余量) 主链路规划(保证业务可用性的核心链路)季度和半年度进行技术栈的审查,看架构是否需要改变,比如业务目标是否改变 容量的改变 稳定性的变化。技术选型时候:技术栈+替代方案+运维成本(同时要有替换的planB)竞争对手的业务变化:如微信红包 没过多久支付宝也出来了红包。未来系统爆发的增长,这就是规划未来架构的目的。未来是指未来的业务,稳定性,成本。各个模块日常应用水位以及历史峰值。轻量:易接入 易使用 易替换。分治理论 微服务–>深化。

2024-03-15 22:57:50 345

原创 如何拆解技术瓶颈的难点

抽象能力:全局分布式 是由一个个小的事务组合而成的,其中一个分布式事务出现问题,全局回滚。RM:角色:分支资源管理 边界:各个分支 功能:注册分支事务提交回滚。TM: 角色:事务发起者 边界:链路起点 功能:发起全局事务。TC : 角色:协调器 边界:中心化 功能:全局事务协调器。以大化小的思路 解决一个一个小问题从而解决最终问题。案例:全局分布式事务的解决方案。

2024-03-13 22:09:58 337

原创 架构设计方法论---ABSD

(Architecture-Based Software Design,ABSD),ABSD方法为产生软件系统的概念体系结构提供基础,它描述了系统的主要设计元素及其关系。所有的功能不可能放在一个模块中,所以用一个模块承载一堆类似的需求,模块设计的多大就需要考虑内聚跟耦合。需求驱动着我们,需求分为业务功能需求(最核心) 质量属性、非功能需求 企业限制,架构策略。架构需求—>架构设计—>架构文档化—>架构复审—>架构实现—>架构演化。复杂的系统—>多个子系统—>每个子系统分成多个模块—>由类组成。

2024-03-09 22:07:53 624

原创 软件架构的风格

其他专家可以通过这个共享的黑板的数据变更,很快地作出反应,优化自己手上的子问题计算。数据流风格中,所有的数据按照流的形式在执行过程中前进,不存在结构的反复和重构,就像工厂中的汽车流水线一样,数据在流水线的各个节点上被加工。大数据分析引擎:大数据分析通常满足82原则,80%的数据分析仍然是有规律可循,可以采用一定的规则引擎来处理,另外的20%数据才需要AI人工智能的强大分能力来完成。管道过滤器在传输过程中没有整体处理的概念,可以快速将一份小的数据变动流过相关的过滤器和管道,实现秒级、分钟级的快速响应。

2024-03-09 19:06:16 994 2

原创 软件架构的过去和现在

4.多视角:逻辑、物理、应用、技术、功能、部署。6.云化:IaaS、PaaS、SaaS资产复用。2.结构设计:数据结构、设计模式、算法。5.体系框架:ABSD、DSSA、AT。7.演进式架构:拆迁者、修缮者、绞杀者。3.统一建模:UML、CBM。

2024-03-09 11:52:20 310

原创 软件架构定义的斗争,你知道吗?

【代码】软件架构定义的斗争,你知道吗?

2024-03-08 23:32:02 349

原创 架构师不能走的路,你走了几个?

追求新技术,为了技术而技术。技术的替换:需要考虑的优点:近期远期的优势、给业务提供了多少效率,偿还了多少技术债。还要考虑成本:成本投入 效益产出。不能做ppt的架构师 落地层面:短中长期规划、上下游业务依赖梳理、集团资源需求、团队配置招聘计划。不能一味的模仿大场的技术,结合实际情况运用合理的技术,给出经济适用的方案。不能因为当架构师,而脱离写代码。学技术不能学基础,要学精通。技术要学,软实力也要构建。

2024-03-08 12:55:00 364

原创 架构师十项全能 你会几个?

SpringCloud源码解析。SpringBoot源码解析。SpringData源码解析。RocketMq源码解析。Mybatis源码解析。Spring源码解析。tomcat源码解析。

2024-03-08 12:06:27 329

原创 react技术全家桶(48)react扩展知识

react小知识点

2022-07-03 15:14:33 353 1

原创 react技术全家桶(47)使用react-redux技术实现多组件通信

redux实现多组件通信

2022-07-02 21:56:32 432

原创 react技术全家桶(46)react-redux使用

react-redux的使用

2022-06-20 00:01:06 333

原创 react技术全家桶(45)redux使用

redux

2022-06-19 17:29:18 263

原创 react技术全家桶(44)向路由组件传递参数以及withRouter的使用以及BrowserRouter与HashRouter的区别

路由组件参数传递

2022-06-16 20:48:58 354

原创 react技术全家桶(43)路由的模糊匹配与严格匹配以及Redirect的使用以及嵌套(多级)路由

react路由

2022-06-16 14:03:26 342

原创 react技术全家桶(42)switch的使用

如果这种情况 react会怎么展示呢?很明显都展示了加上Switch:谁先匹配的 展示谁 如图将会展示test组件的内容switch总结:

2022-06-14 19:48:36 801

原创 react技术全家桶(41)Reat路由

1.SPA的理解a.单页web应用b.整个应用只有一个完整的页面c.点击页面中的连接不会刷新页面,只会做页面的局部更新4.数据都需要通过ajax请求获取,并在前端异步展现。路由的原理点击路由组件,获取到这个路由组件的地址 然后改变浏览器地址 history的listen方法监听到浏览器地址发生了变化 然后在路由配置中找该路径对应的组件是哪一个 然后展示该组件。所以路由就是一个映射关系 key和value key为路径 value可能是function 或者 component...

2022-06-14 19:16:49 172

原创 react技术全家桶(39)消息订阅和发布技术pubsub-js以及路由

1.适用兄弟间的消息传递 以及 子传递给父亲的消息传递2.安装npm i pubsub-js --save3.适用A组件使用B对象 C组件改变B对象在A组件定义含有B对象的状态:同时在该组件中进行订阅:组件加载完成以后开始订阅:在钩子函数中订阅:在C组件发布消息:...

2022-04-17 12:09:05 904

原创 react技术全家桶(38)react axios以及配置代理

1.安装axios npm i axios --save2.import axios from ‘axios’;3.使用:axios.get(‘url’).then(response =>{console.log(response.data)}, //正确响应 是根据httpStatus来判断的是否正确和错误 不是根据后端接口返回的status判断的error =>{console.log(error)}//错误响应)4.ajax请求的同源策略导致跨域请求比如3000端口请求

2022-04-05 16:20:16 761

原创 react技术全家桶(37)react中的要点

1.样式中的注意点class 改为 classNamestyle=‘display:none’ 改为:style={{display:‘none’}}2.类式组件中定义state 以及props传值3.类式组件获取上层传递来的参数 即props4.input中的 checked 和defaultChecked如果写checked就写死了 无论checked=true 还是checked=false都会被选中但是defaultChecked就不一样了,是可以改变的 不会永远被选中...

2022-04-05 13:51:39 1187

原创 react技术全家桶(36)新建react项目扫盲

react

2022-04-04 19:03:24 938

原创 react技术全家桶(35)初始化react脚手架

react脚手架:1.安装nodejs nodejs中会有npm2.npm i -g create-react-app 全局安装3. 切换到想创建项目的目录,使用命令:create-react-app 项目名称4. 注意 不能执行npm ciject 因为这个操作会将隐藏的webpack配置文件暴露出来,这样就无法在隐藏了。...

2022-04-04 00:03:12 487

原创 react技术全家桶(34)react-DOM的diffing的算法

react 每一次渲染都不是对真实DOM进行修改的。每个真实DOM都会对应一个虚拟DOM 每次都会讲虚拟DOM和真是DOM进行比较,如果有变化才会修改真是的DOM。两者对比的力度是标签。没有改变的标签不会动 只有改变的标签才会进行对真实的DOM操作。如上图span会变化 其他的不会变化 可以在input中输入值 会发现 时间在动 但是文本框中的值没变化 所以inputDOM没有刷新。对于标签套标签:diffing的算法是 :只改变span中的文本内容 对于span中的标签是否刷新 就看.

2022-03-20 23:00:23 329

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除