架构方法论

一、架构本质思考

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

微信公众号

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

相关推荐
feng_xiaoshi3 小时前
【云原生】云原生架构的反模式
云原生·架构
架构师吕师傅5 小时前
性能优化实战(三):缓存为王-面向缓存的设计
后端·微服务·架构
团儿.7 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构
艾伦~耶格尔16 小时前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
_.Switch19 小时前
Python机器学习框架介绍和入门案例:Scikit-learn、TensorFlow与Keras、PyTorch
python·机器学习·架构·tensorflow·keras·scikit-learn
神一样的老师1 天前
构建5G-TSN测试平台:架构与挑战
5g·架构
huaqianzkh1 天前
付费计量系统通用功能(13)
网络·安全·架构
2402_857583491 天前
新闻推荐系统:Spring Boot的架构优势
数据库·spring boot·架构
bylander1 天前
【AI学习】Mamba学习(一):总体架构
人工智能·深度学习·学习·架构
未来之窗软件服务1 天前
玄武星辰大阵——软件终端架构思维———未来之窗行业应用跨平台架构
架构