浅谈软件架构设计

walker 2017-06-08 16:11:23 收藏 评论

 软件架构介绍


架构定义:

软件架构不仅仅注重软件本身的结构和行为, 还注重其他特性:使用, 功能性, 性能, 弹性, 重用, 可理解性, 经济和技术的限制及权衡。

软件架构的目标:

  • 可延伸性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展;
  • 可维护性(Maintainable)。软件系统的维护包括两方面:1、排除现有的错误;2、将新的软件需求反映到现有系统中去,一个易于维护的系统可以有效地降低技术支持的花费。
  • 客户体验(Customer Experience)。软件系统必须易于使用。
  • 市场时机(Time to Market)。软件用户

软件逻辑架构:

逻辑架构:软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等

软件系统的逻辑架构图:

ceng.jpg

软件物理架构:

物理架构:软件元件是怎样放到硬件上的?

软件系统的物理架构图

wl.png

物联网架构的演变

单机(One Box)
简单web应用:

  • 访问量小
  • Apache/PHP/MySQL 在同一主机上
  • 瓶颈

1、通常先出现在数据库,然后才是Apache/PHP
2、硬盘 I/O (Innodb) 或MyISAM锁等待

one.png

双机(Two Box)

  • 访问量逐渐增大
  • Apache/PHP在Server A;MySQL在Server B
  • 瓶颈

1、硬盘 I/O (Innodb) 或MyISAM锁等待
2、网络I/O

two.png

多机 (Many Boxes with Replication)

  • 访问量继续增大
  • MySQL主从复制及读写分离 (master 负责IN/UP/DEL, slave负责 SELECT)
  • SELECT, IN/UP/DEL可以在应用程序内指定访问不同服务器 (如使用不同的handle或Db Adapter)
  • WEB Server可能需要使用负载均衡
  • NoSQL/Cache/CDN

many.png

系统分层:

fc.png

Cache Tier

Memcached、Redis等广泛使用。

cache.png

架构新问题
MySQL

  1. Slave Lag 每台Slave数据完全一样。有的忙,有的闲
  2. 数据量越来越大,单表过大,查询效率太低;

综合1.2通常采用

  • memcached数据缓存
  • MySQL水平扩展(库表拆分)

Web Server 负载过高

  • 提高PHP代码执行效率 Opcode Cache
  • 静态文件缓存 Squid/Varnish / CDN
  • 负载均衡

fcache.png

新架构目标:

  • 高可用
  • 高性能
  • 可扩展
  • 监控
  • 成本控制

分布式系统架构

分布式系统概念

What is a Distributed System?
“一个分布式系统是若干个独立的计算机的集合,但是对该系统的用户来说,系统就像一台计算机一样。”

两方面的含义:

  1. 硬件方面:各个计算机都是自治的
  2. 软件方面:用户将整个系统看作是一台计算机

分布式系统定义:

一个分布式系统组织成中间件形式,中间件层分布在多台机器上。

fbs.png

分布式系统优点:

yd.png

分布式操作系统特点:

td.png

网络操作系统(NOS)
网络操作系统的一般结构:

netos.png

分布式系统中设计的关键问题:
透明性(对用户、程序)

tm.png

灵活性

lhx.png

 

单内核基本上是目前的集中式操作系统,增加了网络功能和远程服务集合。
微内核的四种基本服务:
(1)进程间通信机制
(2)少量内存管理功能
(3)必要的低层进程管理和调度
(4)低层输入/输出服务
可靠性

kkx.png

性能

xn.png

可伸缩性(scalability)
避免:

  • 集中式硬件
  • 集中式算法
  • 集中式的数据结构

kssx.png

可扩展性

  • 没有一台机器上存放着关于系统状态的全部信息
  • 机器只是基于本地信息做出决定
  • 一个机器出故障不会破坏算法
  • 不一定存在全局时钟。

可扩展性示例:

sl.png

总结

没有固定的架构,架构都是随着时间和业务的迁徙和变动而发生改变和重构的。所以架构不是一成不变的,也不是淘宝的架构就是万能的,适应你们业务的架构演变的架构就是最优架构。万变不离其宗,但是其底层技术实现和方法是可以借鉴采用大公司场景做法。

责任编辑:walker
分享到

参与评论

相关文章

热点资讯