网站架构要素

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HEJI1103/article/details/80962634

一入编程似海深,似乎每个人都会聊架构,但是对于架构又没有一个准确的认识,不同的人解释架构肯定有不同的说法。
架构师分三类

系统架构师:服务器负载,可靠性,伸缩,扩展,数据库切分,缓存应用等
应用架构师:理解业务,梳理模型,设计模式,接口,数据交互等
产品架构师:行业专家

想当一个系统架构师就需要知道系统架构师的职责:
能够根据需求结合用户领域实际情况,设计合理的软件架构,维护系统构件和接口,并确保系统的性能,安全,可用性,扩展性,伸缩性等要素;并且能够编写相应的设计文档;能够与开发,产品,运维协调合作共同完成工作;

文本主要讲一下架构的要素,做一个合理的架构要设计的几个基本的方面与基本的手段。
性能
what:最直观的感受就是用户的感受很快,多快算快?1s以内,3s是极限,超过3s用户就可能会流失,所以架构师身上的职责还是很严峻的涉及到用户量的流失,所以这方面必须重视。
how:
客户端:浏览器缓存,压缩,减少请求
CDN:把一些资源通过资源分发网络让用户取最近的当然会变快。
服务端:本地缓存,分布式缓存,异步(消息队列),集群(增加计算资源降低cpu的压力),code(多线程,内存管理),DB(索引,缓存,sql优化),Nosql,监控(预防作用);

安全
主要防止,恶意攻击,非法访问,数据安全三类问题;本文只做简要介绍,后续会慢慢补上。

可用性
what:行业里面都是9999,表示一年中99.99%是可以被用户访问到的,服务性网站一般可用性都会要求非常严格,不会出现晚上就不能访问的情况。多想想自己查百度和逛淘宝的情况,基本上只要你有网就可以访问。
how:最常用的办法是冗余

  • 开发:预发布验证,自动化测试,自动化发布,灰度发布;
  • DB:实时备份,失效转移
  • 应用服务器:负载均衡失效转移(前提无状态服务)

扩展性
what:新需求的产生对系统原来部分没有影响或影响很小。
how:
事件驱动架构:消息队列(消息生产者消费者分开)
分布式服务:服务框架(把业务共用的部分抽象出来作为底层服务都来调用这个服务,让业务和服务解耦合)

伸缩性
what:当系统压力很大的时候可不可以通过增加机器减少压力让系统正常运行的能力
how:应用服务器(无状态),缓存(算法实现),DB(路由分区,Nosql)

总结
本文只对架构要素做了简要介绍,有兴趣的可以下方留言一起交流探讨。最后重申一下架构没有绝对的好坏只有合适不合适,没有绝对万能的架构,只有适合某种业务的架构,脱离的业务的架构再好的技术都是耍流氓。

猜你喜欢

转载自blog.csdn.net/HEJI1103/article/details/80962634