架构

软件架构入门

软件架构(software architecture)就是软件的基本结构。

合适的架构是软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。

O’Reilly 出版过一本免费的小册子《Software Architecture Patterns》PDF), 介绍了五种最常见的软件架构,是非常好的入门读物。我读后受益匪浅,下面就是我的笔记。…

PHP 进阶之路 – 亿级 pv 网站架构实战之性能压榨

本博客并非全部原创,其实是一个知识的归纳和汇总,里面我引用了很多网上、书上的内容。也给出了相关的链接。

本文涉及的知识点比较多,大家可以根据关键字去搜索相关的内容和购买相应的书籍进行系统的学习。不对的地方大家予以批评指正。

有人给我留言说,亿级 PV 就别写文章了,随便用几个开源软件就能搞定了,只要不犯什么大错。我不以为然,如果你利用了相同的思想,使用了更高性能的基础服务,也许就能支持更多的流量并发,节约更多的服务器,优化的思路才是重点。

本内容的视频分享见我的直播

TCP接入层的负载均衡、高可用、扩展性架构

一、web-server的负载均衡

互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡。整个架构分三层:

  • 上游调用层,一般是browser或者APP
  • 中间反向代理层,nginx
  • 下游真实接入集群,web-server,常见web-server的有tomcat,apache

 

整个访问过程为:

  • browser向daojia.com发起请求
  • DNS服务器将daojia.com解析为外网IP(1.2.3.4)
  • browser通过外网IP(1.2.3.4)访问nginx
  • nginx实施负载均衡策略,常见策略有轮询,随机,IP-hash等
  • nginx将请求转发给内网IP(192.168.0.1)的web-server

 

由于http短连接,以及web应用无状态的特性,理论上任何一个http请求落在任意一台web-server都应该得到正常处理(如果必须落在一台,说明架构不合理,不能水平扩展)。

 

问题来了,tcp是有状态的连接,客户端和服务端一旦建立连接,一个client发起的请求必须落在同一台tcp-server上,此时如何做负载均衡,如何保证水平扩展呢?

 

二、单机法tcp-server

单个tcp-server显然是可以保证请求一致性:

  • client向tcp.daojia.com发起tcp请求
  • DNS服务器将tcp.daojia.com解析为外网IP(1.2.3.4)
  • client通过外网IP(1.2.3.4)向tcp-server发起请求

 

方案的缺点?

无法保证高可用。

 

三、集群法tcp-server

通过搭建tcp-server集群来保证高可用,客户端来实现负载均衡

  • client内配置有tcp1/tcp2/tcp3.daojia.com三个tcp-server的外网IP
  • 客户端通过“随机”的方式选择tcp-server,假设选择到的是tcp1.daojia.com
  • 通过DNS解析tcp1.daojia.com

架构师于小波:魅族实时消息推送架构

【编者按】此文是根据魅族架构师于小波在msup和魅族联合举办的#魅族技术开放日#的演讲中的分享内容整理而成,于小波分享了魅族实时消息推送架构的其中遇到的坑和一些心得体会。

系统介绍

这个系统数据情况是这样的,实时在线的用户是2500万左右,下面有一个趋势图,从今年1到10月份的都列出来了,这个系统一天PV量是50亿左右,这个系统推送速度可以达到600万条/分钟。…

又拍云图片处理集群架构

黄慧攀,又拍云 CTO。最早在 2001 年开始 web 开发工作;2006 年创办 yo2.cn 优博网(WordPress 博客平台);2010 年加入又拍云开始构建第一代云存储和云 CDN 服务。曾从事前端、后端和服务端等工作,目前主要从事技术架构工作。

又拍云的云处理服务包括图片和音视频处理服务,其中图片处理系统每秒处理图片数量 3000 多张,一天要处理 1 亿张图片左右。图片处理服务面向的客户主要有电商、图片社交两类,他们也是图片处理需求的大户,其他类型的客户对图片处理需求比较少。…
Page 1 of 512345