邱百超 badqiu(a)gmail.com

Slides:



Advertisements
Similar presentations
網站經營心得分享 林文宗 明新科技大學資管系助理教授 麟瑞科技顧問 工研院資通所無線通訊技術組顧問 明新科技大學電算中心網路組組長 國立清華大學資訊工程學系博士.
Advertisements

Web Maple— 云端计 算 数学学院刘海洋 胡婷婷. 需求 什么是 Web Maple ? Maple : “ 数学家的软件 ” 符号和数值计算 动态编程语言 集成编辑环境与图形输出 Web Maple :网页上的数学家 完整的 Maple 功能 云端计算 网页独特的输入输出格式.
高级服务器设计和实现 1 —— 基础与进阶 余锋
NAT与ICMP交互.
Amazon 云计算 AWS (三) 云计算 (第三版) 第 3 章 CLOUD COMPUTING Third Edition
校園資訊安全與防火牆架設 嘉義市育人國小 黃士騰.
IT运维管理解决方案 -轻松管理,自在运维 产品经理 刘曜.
容量规划与保护.
爱上我们的图书馆 —新生入馆引导 河海大学图书馆.
課程地圖 (104年入學-日間部) 校通識核心 專業課程 必修與選修 與管理模組 網路技術 App設計與應用模組 學院通識核心 學院專業核心
Bennett Hong For 2012华东架构师大会 Nov 18,2012
分布式系统 Distributed Systems 第 12 讲 “大型”网站架构设计 Lecture 12 Large Scale Website Architecture 王晓阳、张 奇 复旦大学 计算机科学技术学院.
大规模互联网用户密码泄露 风险控制对策 吴锐
应用性能管理提升客户体验 龙珠客户案例分享 肖澍 云智慧公司.
OpenStack开源虚拟化平台(三) 云计算 (第三版) 第 8 章 CLOUD COMPUTING Third Edition
WordPress 系统优化 优雅、稳定、快速 陈少钧 2007年9月1号北京.
大型、高负载网站架构和应用初探.
——支持千万级DAU的Social Game技术构架
云智慧助力在线医疗服务性能优化 —让IT运营更简单 2015年4月 云智慧科技(北京)有限公司.
中国光大银行“流量分析系统” PHPCPS网络广告联盟系统解决方案 投标方案介绍
云计算学习报告 报告人: 陈 霁 大规模数据处理软件Apache Hadoop.
UBLink集團 裕笠科技股份有限公司 遠豐科技股份有限公司 鉅創科技股份有限公司
“大型”网站技术架构探讨 余浩东 2011年6月.
天涯运维的那些事 网络系统部.天涯.
企业级云计算 A Enterprise Cloud Serivce
网络地址转换(NAT) 及其实现.
苏州大汇信息科技有限公司 招聘简介.
CDM Project Management Database Development
第5章 NoSQL数据库 (PPT版本号:2017年2月版本)
NoSQL分布式数据库.
Alibaba 数据库高可用架构 Alibaba
分布式系统中的关键概念及Hadoop的起源、架构、搭建
利用 ISA Server 2004 建置應用層防護機制
Server Load Balancing 飛雅高科技 李村.
網路安全技術期末報告 Proxy Server
(C) Active Network CO., Ltd
網域名稱系統 Domain Name System
Arena System Technology Architecture 系统技术架构 1、Database V2(Lotus Notes)V3(Oracle8i) 2、Application Server SilverStream2.53 (Java as server side programming.
課程名稱:資料庫系統 授課老師:李春雄 博士
kCloudStorage - 基于云技术的廉价冗余天文海量数据存储
中国式的云计算服务模式 中企开源信息技术有限公司 CE Open Source Software.
第二讲 搭建Java Web开发环境 主讲人:孙娜
从现在做起 彻底改变你自己 Sanjay Mirchandani EMC公司高级副总裁、首席信息官.
存储系统.
大学计算机基础 典型案例之一 构建FPT服务器.
PPPoE PPTP L2TP全解 方伟、产品策划 讲师的CSDN博客地址
网络负载衡技术 演讲人:瞿彬 2018年12月7日. 网络负载衡技术 演讲人:瞿彬 2018年12月7日.
Windows 2003 server 進階介紹 麋鹿.
認識FTP檔案傳輸協定 建立我的部落格 Archie檔案檢索服務 Google搜尋密技 歷久彌新的老朋友-BBS Skype網路電話
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
新世代計算機概論第三版 第11章 網際網路.
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
中国式的云计算服务模式 中企开源信息技术有限公司 CE Open Source Software.
我們的製作人員有: “3C精英” 湛啟初,萬偉傑,陳瑋瑜
Python联合服务器的使用.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
解决“最后1公里”问题.
105學年度第二次 總務會議 106年03月28日(二) 下午14:00 第二教學研討室.
Touch Github = Touch the World
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
課程名稱:資料庫系統 授課老師:李春雄 博士
Google的云计算 分布式锁服务Chubby.
基于列存储的RDF数据管理 朱敏
DNS CACHE POISONING A 曾子桐 指導教授: 梁明章.
天翼云3.0产品介绍 2018/4/24.
天翼云3.0产品介绍及18年规划.
第 4 章 网络层.
Presentation transcript:

邱百超 badqiu(a)gmail.com 大规模网站架构 邱百超 badqiu(a)gmail.com

PHP facebook,yahoo Java taobao,163 Python google .NET MySpace

语言不是可伸缩性的关键,架构才是关键

网站架构的目标 高可用性(High Availability) 可伸缩性(Scalability) 高性能(High Performance)

事务

传统的事务(ACID) 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability)

CAP原则 Consistency 一致性 Availability 可用性 Partition Tolerance分区耐受性 在任意时刻,只有两项能同时成立 不要浪费精力可能突破上面限制 可用性 一致性 分区耐受性

新的事务策略-BASE策略 避免分布式事务 基本可用(Basically Available) 软状态(Soft state) 选择最终一致(Eventually consistent)

数据库读写分离

MySQL Proxy(数据库读写分离) load balancing failover query analysis R/W Splitting

数据库Shard 水平分区 垂直分区

Sharding vs Partition Sharding Partition 存储依赖 可跨越DB 可跨越物理机器 可跨越表空间,不同的物理属性 不能跨DB存储 存储方式 分布式 集中式 扩展性 Scale Out(横向扩展,增加便宜设备) Scale Up(升级设备) 可用性 无单点 存在单点(DB数据本身) 价格 低廉 适中,甚至昂贵 应用场景 web 2.0网站 多数传统应用

垂直分区 user App DAL blog

水平分区 user 33% App DAL user 33% user 34%

水平分区

DAL(数据访问层) 对应用透明的使用数据库的水平分区及垂直分区

DAL Proxy(实现1) user 应用 DAL 服务器 user

DAL API(实现2) user 应用 DAL user

两种实现方式 独立的DAL Proxy服务器 DAL API MySQL: Amoeba PostgreSQL: PL/Proxy (Skype) DAL API Java: Hibernate Shard,Ibatis Shard,HiveDB Python: Pyshards

shard改变数据库设计 尽量避免join 数据冗余/反范式

数据冗余 for shard shard before shard after comment(id,blog_id,content) comment(id,blog_id,content,user_id)

数据分区策略 水平分区 垂直分区 2 * N(如定单,购买者与网店各一份) N / n (按日期或ID范围分区) hash(N) % n( 按hash分) 查找表 垂直分区 按功能分(论坛,博客)

消息队列(MessageQueue) 程序解耦 隔离 消息的可靠传输(物理存储中转消息) MQ MQ A C B

消息总线

应用场景 耗时操作 邮件发送/短消息发送 日志 程序解耦(A挂了,但B继续可以使用)

MQ产品 开源 RabbitMQ(Erlang) ActiveMQ(JAVA) 商业 IBM MQ WebLogic MQ

回顾CAP及BASE 可用性 一致性 分区容忍性

负载均衡 DNS负载均衡 反向代理负载均衡 直接路由 ......

failover

DNS负载均衡 简单 缺少灵活性(DNS缓存) D:\python\Django-1.1.1>nslookup www.163.com Server: rdev1.rdev.kingsoft.net Address: 10.20.18.10 Non-authoritative answer: Name: www.cache.gslb.netease.com Addresses: 220.181.28.54, 220.181.28.212, 220.181.28.50, 220.181.28.51 Aliases: www.163.com

反向代理负载均衡 负载均衡软件 nginx HAProxy apache httpd LVS(网络第四层工作) F5(硬件,四层/七层)

Linux Virtual Server(LVS)

网络地址转换(NAT):VS-NAT

IP隧道方式:VS-TUN

直接路由方式:VS-DR

其它工作模式 Virtual Server via NAT(VS-NAT) 用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。 Virtual Server via IP Tunneling (VS-TUN) 用IP隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线。 集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等. Virtual Server via Direct Routing(VS-DR) 用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。

高可用性 使用双机热备 故障时切换至备份机 工具(Linux-HA) heartbeat

缓存 让数据更靠近用户 DataBase Memchched App Cache Page Cache/Static Browse Cache ThreeParty CDN

本地缓存 节点有状态,状态更新需要同步至其它服务器 比远程缓存更高性能 慎用,不具备可伸缩性 可以使用组播方式通知数据改变 需要通知的服务器过多会存在性能问题 比远程缓存更高性能 慎用,不具备可伸缩性

Share Nothing Architecture 无共享架构

数据缓存(memchched) 动态内容缓存 浏览器缓存

数据缓存 分布式memchched 基本满足大部分性能要求

动态内容缓存 页面片段缓存 静态化内容

反向代理缓存 squid 巨无霸 Varnish

反向代理缓存 Nginx负载均衡 Varnish 缓存 tomcat

静态资源分离 img,js,css使用单独的服务器处理请求 浏 览 器 apache httpd tomcat 静态资源 静态资源 动态请求 动态请示 动态请示

现实网站图片存储分析 http://img3.cache.netease.com http://b9.photo.store.qq.com http://img08.taobaocdn.com http://t3.gstatic.cn 图片服务器的域名不同 多台机器保存相同的图片(img3,img2子域名) 同一页面不同图片随机生成不同的子域名进行负载均衡 CDN ?

Content Delivery Network

浏览器优化 节省带宽:js,css的静态gzip压缩 浏览器缓存 小图片,css,js合并 http header: Content-Encoding: gzip 浏览器缓存 http header: Etag,Last-Modified 小图片,css,js合并

js混淆工具 JSA(推荐) http://www.xidea.org/ js压缩 多个js合并为一个 可以与ant集成

Session cookie(强烈推荐) 集中式session memcached(推荐) session复制(过多服务器复制存在性能问题)

分布式文件系统 MogileFS Automatic file replication No single point of failure

自动化

总结 CAP原则 BASE策略 异步(MessageQueue) 数据库 数据的水平切分及垂直切分 数据库读写分离 避免分布式事务 反范式的数据库设计 负载均衡 DNS负载均衡 反向代理负载均衡 LVS 缓存 数据库缓存 服务器缓存/页面缓存/数据缓存/静态化 反向代理缓存 Session/Share Nothing Architecture架构 浏览器优化 浏览器缓存/CDN/小图片合并 分布式文件系统(MogileFS)

参考 http://www.dbanotes.net/arch/base_arch.html http://www.dbanotes.net/arch/cap.html http://www.infoq.com/cn/articles/ebay-scalability-best-practices