Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面向对象架构设计技巧

面向对象架构设计技巧

作者头像
别明天就今天吧
发布于 2020-09-07 11:05:26
发布于 2020-09-07 11:05:26
4680
举报

架构设计原则

1.客户优先原则

架构设计需要考虑的东西太多了。

技术的:成本、可靠性、性能、可扩展性、复杂性、可测试性等

管理的:质量、投入、进度、人力水平等

抓住主要矛盾:客户需求。

2.适当超前原则

第一个原因:唯一不变的变化

第二个原因:首先满足客户需求,然后再超越客户需求

适当的意思:要超前,但不要超太多

架构设计的屠龙刀

"拆"与"合"

一个模块太慢了,拆成两个、三个

一个模块太负责了,拆成两个、三个

一台机器处理太慢了,拆成两台机器、三台机器

一台机器的可靠性太低了,拆成主备、集群

一块网卡太慢了,就拆成两块、三快

一根网线带宽太小了,拆成多根网线

一个机房可靠性不高,拆成两个机房

机房在中国不安全,拆成在中国和美国

拆也是有技巧的,有原则的

1.要拆应该拆的,不要到处都拆

2.不要使用暴力拆,要有技术的拆

架构设计的终极方法:拆,而终极难点是:合

以上表明,拆是手段,合才是关键。拆了之后,还有一件更重要的事,就是怎么把拆出来的模块整合起来。

拆的常见手段:

1.拆硬件

俗称的加机器,拆硬件可以得到两类经典的架构模式:主备模式和负载均衡模式。

主备模式:如mysql主从,主机负责写,从机负责读,主机同步数据给从机,从机间不沟通。

负载均衡模式:软件中的nginx、硬件的F5、网络的DNS

2.拆地点

【同城多机房】、【跨城多机房】、【跨国多机房】

3.拆功能

拆功能解决复杂性和可扩展性,一个系统拆成多个子系统,一般拆成3-5个系统比较适合。

例子:

1000TPS的架构:一台机器轻松搞定

1万TPS的架构:使用epoll的异步编程模式

10万TPS的架构:一台机器拆成两台

100万TPS的架构:拆成20台的服务器集群

1000万TPS+高可用的架构:拆成上海机房、纽约机房、印度机房,每个机房70台机器

合的常见手段:

1.客户端合:

Memcached的服务器集群拆分为三台服务器,但是这些服务器间没有交互,而是通过Memcached和苦短将这些机器合起来成为一个集群,好处是服务器端的设计很简单,缺点是客户端的设计比较负责,客户端需要保存服务器的信息列表,一旦增加、删除,客户端必须同步修改配置,复杂度很大。

2.合网络:

DNS、nginx

3.中间件合:

如TDDL,有了它之后,客户端不再直接连接数据库,而是连接TDDl,它可以完成分库分表、主备倒换、读写分离等,比较复杂、成本高

4.子系统合

子系统间互相调用

架构师要掌握坚实的知识和技能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 别明天就今天吧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
架构设计文档模板
架构设计中最重要的两个文档的模板和关键说明。这个案例文档仅给出一些关键内容供你参考,部分细节无法全面覆盖或者完全保证正确。(斜体字是示例)
Dlimeng
2023/06/30
1K0
架构设计文档模板
架构设计的问题与解法
小到某个功能的开发方案,大到整个业务的系统设计,都可以看到架构设计的影子,但是架构设计的目的到底是什么?『从0开始学架构』的作者给我们的解答是:架构设计的主要目的是为了解决软件系统复杂度带来的问题。
Cloudox
2023/03/09
9950
架构设计的问题与解法
面向业务的高可用架构设计
· 再好的技术、再完美的规章 , 在实际操作层面也无法取代人自身的素质和责任心 。
架构精进之路
2021/03/15
8100
架构设计(一)
则峰值 x 3, TPS是345, QPS是3450  ->  这个量级不要求高性能;
Vincent-yuan
2022/05/11
5610
架构设计(一)
架构设计 5-高可用架构之高可用存储架构
导读:《架构设计》系列为极客时间李运华老师《从0开始学架构》课程笔记。本文为第五部分,主要介绍高可用存储架构,分别介绍了双机架构和集群架构以及各种具体方案的优缺点和应用场景。
aneutron
2022/08/19
5130
从零开始学架构读书笔记
  软件架构的出现是为了解决系统规模增加后出现了系统耦合严重,开发效率低,逻辑复杂,扩展困难等问题。所以架构设计是为了解决软件复杂度而存在的,所以架构设计的目地是识别出需求的复杂点然后针对性的解决。系统设计时需要考虑:性能,系统的可扩展性,安全性,高可用,成本。   架构师的工作并不神秘,成熟的架构师需要对已经存在的技术非常熟悉,对已经经过验证的架构模式烂熟于心,然后根据自己对业务的理解,挑选合适的架构模式进行组合,再对组合后的方案进行修改和调整。
良辰美景TT
2018/09/11
1.1K0
从零开始学架构读书笔记
从零开始学架构-day03
架构设计的目的之一是为了解决项目的复杂度。复杂度的来源,追求高性能,高可用,并且拓展。先从高性能来看。
袁新栋-jeff.yuan
2021/12/07
3010
从零开始学架构-day03
分布式架构设计之电商平台
何为软件架构?不同人的答案会有所不同,而我认为一个好的软件架构除了要具备业务功能外,还应该具备一定的高性能、高可用、高伸缩性及可拓展等非功能需求。而软件架构是由业务架构和技术架构两部分组成,因为有了业务结构才会催生出软件架构,进而来满足业务上的需求,所以,在做软件架构设计时,需要分为业务架构设计和技术软件架构设计,二者不可分离哦!那么,接下来就以本人实际工作中的电商平台为例,进行说明电商平台架构设计,因为不同行业产品系统不同业务不同,而催生的系统软件的实现要求及架构设计就不同了!
全栈程序员站长
2022/09/07
7200
高并发架构设计经验
高并发解决的核心问题是在同一时间上有大量的请求过来,然后我们的系统要怎么抗住这些请求带来的压力。比如在线直播服务,同时有上百万甚至上千万人观看。比如秒杀品,同时有大量用户涌入。
Allen.Wu
2022/11/14
1.3K2
面向对象架构设计流程
软件架构:与"设计模式"类似,基于"领域架构",应用架构设计原则和方法,精雕细琢,逐步迭代,得出最终的软件架构。
别明天就今天吧
2020/09/07
6240
架构设计之「数据库集群方案」
在之前的文章中,我们知道数据库服务可能已经成为了很多系统的性能关键点,甚至是瓶颈了。也给大家介绍了数据库服务器从主备架构、到主从架构、再到主主架构的基础方案。但如果单台机器已经不能满足完整业务数据存储的时候,我们就需要考虑采用多机甚至多中心的部署方案了。
奎哥
2018/10/18
1.2K0
架构设计之「数据库集群方案」
浅谈软件架构
每一个程序员都有一个架构师的梦,可理想很丰满,现实很骨感---大部程序员工作中都做着简单的 CRUD,我也不例外。如果就这样还常把“架构”两个字挂在嘴边,估计程序员们都会脸红。但就因为暂时还不能成为架构师,我们就要放弃成为架构师的梦想了吗?显然不能,掌握架构设计的相关理论是成为架构师的前提,有了方法论可以更好地指导我们干活。机会总是留给有准备的人的,万一哪天梦想实现了呢?
政采云前端团队
2023/11/16
4920
浅谈软件架构
浅谈Web网站架构演变过程及各阶段所用的技术和架构设计(转)
  我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。
wuweixiang
2019/03/12
2K0
浅谈Web网站架构演变过程及各阶段所用的技术和架构设计(转)
架构设计《一》谈谈架构
https://blog.csdn.net/hguisu/article/details/78258430
搜云库技术团队
2019/10/17
2.7K0
5分钟聊架构,聊透架构设计背后的道理与本质!
今年打算以「系列文章」的方式,来写架构干货文,用通俗易懂的话,把那些晦涩的核心知识给梳理出来,你看着也会很舒服,说不定还能有点儿小兴奋。其实,输出才能倒逼更好的输入,2021 与你共勉,我们一起努力吧!
玄姐谈AGI
2021/01/12
4810
5分钟聊架构,聊透架构设计背后的道理与本质!
大型网站电商网站架构案例和技术架构的示例
大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。
数商云
2019/05/27
3.1K0
架构设计之一——基础架构
•典型表现有软件质量低下、项目无法如期完成、项目严重超支等,因为软件而导致的重大事故时有发生。
aneutron
2022/08/10
7790
什么才是真正的架构设计?
在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。
xcbeyond
2020/03/25
1.2K0
什么才是真正的架构设计?
饿了么的架构设计及演进之路(转)
一个产业的模型,快速地将它产生出来。“快”是第一位的,不需要花太多精力在架构设计上。在网站进入扩张期才需要对架构投入更多的精力来承载网站在爆发时的流量。饿了么成立已经8年,现在日订单量突破900万,我们也有了较为完善的网站架构。 每周只有两天可以发布; 周末是绝对不可以发布的; 业务的高峰期绝对不允许发布; 等等…… 我们发现,发布的最大问题在于发布上去之后没有简单可执行的回退操作。回退操作到底是谁来执行,是发布人员就可以执行,还是需要专人来执行?如果是发布人员的话,发布人员并非24小时在线工作,出了问
老七Linux
2018/05/31
9920
大型分布式电商系统架构是如何从0开始演进的?
本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好的参考价值。 1、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 2、大型网站架构目标 高性能:提供快速的访问体验。 高可用:网站服务一直可以正常访问。 可伸缩:通过硬件增加/减少
Java高级架构
2018/07/20
1.4K0
相关推荐
架构设计文档模板
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档