什么才是真正的架构设计?( 五 )

  • 为虚无的未来埋单而过度设计
  • 过早做出关键性决策
  • 客户说啥就是啥成为传话筒
  • 埋头干活儿缺乏前瞻性
  • 架构设计还要考虑系统可测性
  • 架构设计不要企图一步到位
  • 常见误区
    • 误区1——架构专门由架构师来做,业务开发人员无需关注:架构的再好,最终还是需要代码来落地,并且组织越大这个落地的难度越大 。不单单是系统架构,每个解决方案每个项目也由自己的架构,如分层、设计模式等 。如果每一块砖瓦不够坚固,那么整个系统还是会由崩塌的风险 。所谓“千里之堤,溃于蚁穴” 。
    • 误区2——架构师确定了架构蓝图之后任务就结束了:架构不是“空中楼阁”,最终还是要落地的,但是架构师完全不去深入到第一线怎么知道“地”在哪?怎么才能落的稳稳当当 。
    • 误区3——不做出完美的架构设计不开工:世上没有最好架构,只有最合适的架构,不要企图一步到位 。我们需要的不是一下子造出一辆汽车,而是从单轮车→自行车→摩托车,最后再到汽车 。想象一下2年后才能造出的产品,当初市场还存在吗?
    • 误区4—— 为虚无的未来埋单而过度设计:在创业公司初期,业务场景和需求边界很难把握,产品需要快速迭代和变现,需求频繁更新,这个时候需要的是快速实现 。不要过多考虑未来的扩展,说不定功能做完,效果不好就无用了 。如果业务模式和应用场景边界都已经比较清晰,是应该适当的考虑未来的扩展性设计 。
    • 误区5——一味追随大公司的解决方案:由于大公司巨大成功的光环效应,再加上从大公司挖来的技术高手的影响,网站在讨论架构决策时,最有说服力的一句话就成了“淘宝就是这么搞的”或者“腾讯 就是这么搞的” 。大公司的经验和成功模式固然重要,值得学习借鉴,但如果因此而变得盲从,就失去了坚持自我的勇气,在架构演化的道路上迟早会迷路 。
    • 误区6——为了技术而技术:技术是为业务而存在的,除此毫无意义 。在技术选型和架构设计中,脱离网站业务发展的实际,一味追求时髦的新技术,可能会将技术发展引入崎岖小道,架构之路越走越难 。考虑实现成本、时间、人员等各方面都要综合考虑,理想与现实需要折中 。
    七. 架构知识体系7.1. 架构演进
    • 初始阶段:LAMP,部署在一台服务器
    • 应用服务器和数据服务器分离
    • 使用缓存改善性能
    • 使用集群改善并发
    • 数据库地读写分离
    • 使用反向代理和cdn加速
    • 使用分布式文件和分布式数据库
    • 业务拆分
    • 分布式服务
    7.2. 架构模式
    分层:横向分层:应用层,服务层,数据层
    分割:纵向分割:拆分功能和服务
    分布式
    • 分布式应用和服务
    • 分布式静态资源
    • 分布式数据和存储
    • 分布式计算
    集群:提高并发和可用性
    缓存:优化系统性能
    • cdn
    • 方向代理访问资源
    • 本地缓存
    • 分布式缓存
    异步:降低系统的耦合性
    • 提供系统的可用性
    • 加快响应速度
    冗余:冷备和热备,保证系统的可用性
    自动化:发布,测试,部署,监控,报警,失效转移,故障恢复
    安全:
    7.3. 架构核心要素
    高性能:网站的灵魂
    • 性能测试
    • 前端优化
    • 应用优化
    • 数据库优化
    可用性:保证服务器不宕机,一般通过冗余部署备份服务器来完成
    • 负载均衡
    • 数据备份
    • 自动发布
    • 灰度发布
    • 监控报警
    伸缩性:建集群,是否快速应对大规模增长的流量,容易添加新的机器
    集群
    • 负载均衡
    • 缓存负载均衡
    可扩展性:主要关注功能需求,应对业务的扩展,快速响应业务的变化 。是否做法开闭原则,系统耦合依赖
    • 分布式消息
    • 服务化
    安全性:网站的各种攻击,各种漏洞是否堵住,架构是否可以做到限流作用,防止DDoS攻击 。
    • xss攻击
    • sql注入
    • csr攻击
    • web防火墙漏洞
    • 安全漏洞
    • ssl
    八. 架构书籍推荐1. 《大型网站技术架构:核心原理与案例分析》
    这是比较早,比较系统介绍大型网站技术架构的书,通俗易懂又充满智慧,即便你之前完全没接触过网站开发,通读前几章,也能快速获取到常见的网站技术架构及其应用场景 。非常赞 。


    推荐阅读