前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【大型网站技术架构笔记】(二)大型网站架构模式与核心要素

【大型网站技术架构笔记】(二)大型网站架构模式与核心要素

作者头像
吃橙子的狐狸
发布2019-02-28 16:13:35
5650
发布2019-02-28 16:13:35
举报
文章被收录于专栏:橙子架构杂谈橙子架构杂谈

架构模式

系统朝大型系统衍变的过程中,如下几个架构模式是我们应该考虑也终将经历的。

分层

即对系统进行横向划分。比如进行MVC分层,又可分为接入层、业务层、核心数据层。应当禁止跨层调用以及逆向调用

分割

即对系统进行纵向划分。比如在业务层上拆解业务,核心数据层上划分不同类型的数据,以方便流量控制等。

分布式

分布式部署一般耳熟能详。也是SOA中重要的一环。但是在没有高效分布式事务的前提下,如何在分布式中保证数据一致性,是首当其冲需要考虑的。分布式概念衍生出很多我们生产环境中常规的一些设计思路,比如将应用和服务分布式化;静态资源分布式部署即动静分离,以方便通过反向代理,加速等手段来加速与优化;nosql、sql等方式存储数据;分布式配置;分布式权限控制;分布式封禁;分布式锁;分布式文件系统如NFS;分布式计算,如阿里的天梯系统等。

集群

到了后期,为保证服务的性能和高可用,一般都会进行集群化部署,即将服务进行虚拟化处置。这中间就需要考虑负载均衡,健康检查,自动剔除等。

缓存

缓存在大型系统中的地位极其重要。其可以充当数据层的缓冲层,通过缓存热点数据,以及不常改变的数据来达到提升性能,减少数据持久层的压力等目的。缓存从前到后可以分为:CDN加速、反向代理、本地缓存、分布式缓存。

异步化

当并发过大超过服务吞吐能力时,采用消息队列(比如RabbitMQ, ActiveMQ, Kafka)可以达到削峰的目的。

冗余

进行适当的热备、冷备也是比较重要的。比如RabbitMQ就可以通过冗余来保证数据的可靠性。

自动化

自动化部署、发布、测试、监控、报警、降级、资源分配等都是一个必须要考虑的议题。

安全

手机验证码、图形验证码、以及敏感信息过滤、防SQL注入、防XSS攻击(如CSRF)等。

核心架构要素

性能

几个tips: 浏览器端利用浏览器缓存、使用页面压缩、减少Cookie传输; 传输上采用CDN加速和反向代理服务器; 服务器端利用本地/分布式缓存;结合消息队列实现异步化;集群化虚拟化; 代码层面采用多线程,以及JVM优化,利用弱键等其他手段 数据库端,适当采用索引,利用DB缓存(默认打开),SQL优化,利用NOSQL,NEWSQL优化 性能的衡量标准一般可以看平响、吞吐量(TPS、QPS)等。

可用性

一般就三个手段、冗余、集群化、分布式。

伸缩性

服务尽量同构。DB、cache在考虑分布式时尽量提前设计好扩展方案。也可以采用一些主流的对水平伸缩支持较好的nosql、memcached、hbase等。

扩展性

这个没啥好说。扩展性依赖于前期良好的架构设计。合理业务逻辑抽象,水平/垂直切割分布式化等等。

安全性

如上。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年02月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 架构模式
    • 分层
      • 分割
        • 分布式
          • 集群
            • 缓存
              • 异步化
                • 冗余
                  • 自动化
                    • 安全
                      • 核心架构要素
                        • 性能
                        • 可用性
                        • 伸缩性
                        • 扩展性
                        • 安全性
                    相关产品与服务
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档