面向对象架构设计技巧

Posted 别明天就今天吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象架构设计技巧相关的知识,希望对你有一定的参考价值。

    架构设计原则

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.子系统合

    子系统间互相调用


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

以上是关于面向对象架构设计技巧的主要内容,如果未能解决你的问题,请参考以下文章

面向对象的架构设计

连载:面向对象葵花宝典:思想技巧与实践(30) - SRP原则

[架构之路-135]-《软考-系统架构设计师》-软件工程-5-软件系统设计(面向对象设计基础)

软件架构设计-面向服务的架构设计

软考 系统架构设计师案例分析③ 面向对象设计

面向对象设计----软件设计师