您的位置:首页 > 业界新闻

关于互联网架构设计的心得与体会

2016-06-20 11:07 615 查看
首先需要声明一个观点:好的架构应该是随着公司业务的发展逐步逐步进化出来的!尤其是针对互联网初创公司,受限于人力,物力,财力,大部分都是将功能放入一个项目,以便于快速上线。然而,随着业务的发展,功能越来越多,服务压力越来越大,都需要对系统的进行重构,以满足业务的发展。

再来说说什么是好的架构,好的架构应该是在资源,需求,性能,可用性,维护性或扩展性中找到一个平衡点。如果在资源充足,需求明确的情况下怎么来设计我们的架构?可以从三个方面来思考:

1.性能

随着业务的发展,用户量越来越大。那就要求我们的系统具有横向扩展的能力,也就是要求我们的系统必须是无状态的。这只是基础条件,接下来最重要的是你要知道你的系统的瓶颈在哪里,可以设置一些监控点,看看哪里耗时最多,然后有针对性的去优化。

考虑性能需要懂得分流!

2.可用性

可用性上可以理解为冗余+自动化+报警

首先我们没办法保证每个服务都是稳定可靠的,因为总有宕机的时候,一般我们在部署服务时最少俩台,这是其一。其二,如果服务中一台宕机,其他服务能不能抗的住,如果抗不住需要再冗余一台。再一个就是自动化,,避免不必要的人工干预。最后一个就是报警,主要是针对系统出现问题时,尤其是需要人工及时干预时。

3.可维护性(扩展性)

尽量保证系统内的功能是高内聚的。早期我们做项目大多数都是所有功能都在一个项目中,很多人都在维护,结果导致冲突大大提高,同时也不利于扩展。我见过一个项目光启动就要十几到二十分钟。所以可以将系统中相关性不是很大的功能,或公用的功能独立出去,形成服务,同时保证服务是可以横向扩展的。一个大的系统变成几个小的系统,维护小的系统肯定比大的系统要方便一些,当然得有个度,如果小系统太多也会增加它的维护成本。另外小系统之间也要尽量减少环形依赖。

说了系统之间的,再说说系统内部,每个系统也要有清晰的分层结构,每层都有自己的职责,层与层之间需要清晰的调用关系。然后再说说代码层面,设计模式,设计原则都是必须要考虑的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  架构设计