架构方法论

一、架构本质思考

1.1、什么是架构?

1.2、架构就在生活中

假如你是食堂大妈,如何低成本解决高峰回收的阻塞?

假如你是车站保安,如何低成本解决春运进站的并发?

假如你是电工师傅,如何低成本解决异常电流的危害?

举例子如下:

二、业务架构方法论

2.1、战略驱动的顶层架构

2.2、战略设计 ( 子域划分)

为什么要分子域?

1、拆解难题: 通过领域的细分,逐步缩小问题域,降低业务理解和实现的复杂度。

2、区别对待: 区分不同子域功能的属性和重要性,投入不同的资源建设。

2.3、战术设计 ( 领域建模)

2.4、案例:仓储子域建模过程

三、系统架构方法论

3.1、系统拆分过程

3.2、系统演进过程

3.2.1、单体架构-应用服务器和数据库一个服务器

3.2.2、单体架构-应用服务器和数据库进行分离

3.2.3、引入本地和分布式缓存

3.2.4、Nginx 负载均衡

3.2.5、数据库读写分离

3.2.6、数据库按业务分库

3.2.7、大表拆分小表

3.2.8、多个 Nginx 负载均衡

3.2.9、DNS 机房负载均衡

3.2.10、NOSQL 和搜索引擎

3.2.11、拆分微服务

3.2.12、容器化技术

四、技术架构方法论

4.1、良好的技术架构应该是什么样子?

4.2、可靠性策略

4.2.1、分仓隔离---管控危机

解释: 让损失处于局部

举例: MQ 多个 topic,数据库防雪崩等,病毒的隔离区

原则: 减少故障的蔓延范围

4.2.2、冗余---狡兔三窟

解释: 冗余指的是多重保险,浪费是为了可靠

举例: 主备数据库,集群,异地多活等......

原则: 凡事和数据相关的应该保持双份

4.2.3、降级---断尾求生

解释: 丢车保帅,牺牲边缘功能,保全核心功能。

举例: 日志降级,风控降级,弱依赖降级......

原则: 在核心业务收到威胁的时候,如果非核心业务有拖累的情况,果断抛弃非核心业务。 !

4.2.4、兜底---最后屏障

解释: 最后的防护手段。

举例: 商场电梯防坠落网,走兜底逻辑,技术上也有很多类似的场景设计

4.2.5、回滚---原路撤退

解释: 善于用兵者给自己留下退路

举例: 发布应用,一定要留下可用版本,一旦线上有问题,可以回滚

原则: 好的架构师,任何时候都会留下退路

4.3、拓展性策略

4.3.1、解藕---井河无犯

解释: 由于性质有较大差异,不同的性质需要分开对待。同一个事物的两个或者

多个方面矛盾激化,以至于不可调和,通过分离来消除矛盾

举例: 前后端分离

原则: 业务 VS 数据、核心&非核心

4.3.2、异步---事件驱动

解释: 异步通过应答方主动提醒,释放了请求方的时间

举例: AIO,MQ

原则: 核心流程和非核心流程之间多用异步,降低了核心流程的风险

4.3.3、插件---随意组合

解释: 插件化的是为了更灵活的组合,适用变化

举例: 流程引擎

原则: 接口标准化

流程引擎: 业务流程的拓展,快速响应

规则引擎: 代替 IF- ELSE,可配置化

4.4、高性能策略

4.4.1、集群分进合击

解释: 集群就是众人拾柴火焰高,集群里面每个点都是微不足道,组合在一起就非常强大。

举例: 服务器集群

4.4.2、缓存未雨绸缪

解释: 把获取代价较大的资源提前准备好。

举例: 线程池、redis

原则: 遇到需要频繁实时用较大代价获取资源的情况,优先考虑缓存

4.4.3、并行多管齐下

解释: 并行的本质就是利用多块资源同时满足多件事情

举例: 一个功能里面多个查询逻辑,为了提高性能,可以并行查询

原则: 尽量将不必要的串行优化为并行

4.4.4、并发统筹方法

解释: 并发与并行的本质区别在于,并发存在资源竞争,本质上仍然是串行,只不过将资源利用效率提高

举例: 多线程

原则: 由于存在资源竞争,所以并发不是越多越好,每个系统根据自己的并发能力去设计

4.5、可维护性策略

4.5.1、监控及时感知

解释: 及早监控到已经发生的风险,并能预警

举例: 运维监控系统

原则: 1、核心服务要有操作记录和监控

2、监控到的风险及时预警

4.5.2、修复自我痊愈

解释: 在感知的基础上,系统能够自我恢复正常。

举例: 人体的免疫系统,能够自我修复。Dubbo 注册中心,断开重连,业务上失败重试(幂等)

原则: 自愈的前提是能够感知

4.6、安全性策略

4.6.1、脱敏/加密秘不示人

解释: 增加非相关人获取私密信息成本

举例: 项目采购招投标文件要转机需要密码解密操作,其他人不能看到

4.6.2、认证报上名来

解释: 你得让我相信你就是你,可是你凭什么说你就是你?

举例: Token,验证码,人脸识别。

原则: 认证前的唯一标识。

4.7、降成本策略

4.7.1、复用他山之石

解释: 整合一切资源,可以快速满足业务目标。

举例: 基础能力平台,组件库。

原则: 不要重复造轮子。

五、架构的表达方式

5.1、4+1 视图

5.2、架构设计原则

小结

本次主要介绍了 redis 在内存中使用的是简单动态字符串( SDS ),以及它的三种编码方式,还有它耗费内存的原因在于 RedisObject 和本身 SDS 的结构。我们可以使用压缩列表来节省内存,剖析了其节省内存的原因。并使用 Hash的数据结构给出了实际的节省内存的案例,大家可以根据实际的业务,合理的设计缓存的存储结构,达到节省内存的目的。这里可以推荐一个网址可以用来大致计算 Redis 的内存损耗redis内存损耗计算

参考

memory-optimization

Redis 核心技术与实战

推荐阅读

redisString结构解析及内存使用优化

Trino 插件开发入门

精准测试体系构建

操作日志数据治理实战

事务探索

招贤纳士

政采云技术团队(Zero),Base 杭州,一个富有激情和技术匠心精神的成长型团队。规模 500 人左右,在日常业务开发之外,还分别在云原生、区块链、人工智能、低代码平台、中间件、大数据、物料体系、工程平台、性能体验、可视化等领域进行技术探索和实践,推动并落地了一系列的内部技术产品,持续探索技术的新边界。此外,团队还纷纷投身社区建设,目前已经是 google flutter、scikit-learn、Apache Dubbo、Apache Rocketmq、Apache Pulsar、CNCF Dapr、Apache DolphinScheduler、alibaba Seata 等众多优秀开源社区的贡献者。

如果你想改变一直被事折腾,希望开始折腾事;如果你想改变一直被告诫需要多些想法,却无从破局;如果你想改变你有能力去做成那个结果,却不需要你;如果你想改变你想做成的事需要一个团队去支撑,但没你带人的位置;如果你想改变本来悟性不错,但总是有那一层窗户纸的模糊......如果你相信相信的力量,相信平凡人能成就非凡事,相信能遇到更好的自己。如果你希望参与到随着业务腾飞的过程,亲手推动一个有着深入的业务理解、完善的技术体系、技术创造价值、影响力外溢的技术团队的成长过程,我觉得我们该聊聊。任何时间,等着你写点什么,发给 zcy-tc@cai-inc.com

微信公众号

文章同步发布,政采云技术团队公众号,欢迎关注

相关推荐
javaDocker7 小时前
业务架构、数据架构、应用架构和技术架构
架构
JosieBook8 小时前
【架构】主流企业架构Zachman、ToGAF、FEA、DoDAF介绍
架构
.生产的驴9 小时前
SpringCloud OpenFeign用户转发在请求头中添加用户信息 微服务内部调用
spring boot·后端·spring·spring cloud·微服务·架构
丁总学Java10 小时前
ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)
arm开发·架构
ZOMI酱12 小时前
【AI系统】GPU 架构与 CUDA 关系
人工智能·架构
天天扭码18 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
余生H19 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer