电商设计架构

初学者整理,学习用。有不完善地方请大大们指出。。。后续学习了更多知识再陆续补充。mysql

静态架构蓝图:web

CDN:redis

Content Delivery Network 内容分发网络spring

其目的是避开影响数据传输速度稳定的瓶颈和环节,使内容访问更快,更稳定。sql

经过在网络各处设置节点服务器,构成在现有互联网基础上的一层智能虚拟网络,实时的根据数据流量和各节点链接,负载情况,用户的访问距离,响应时间将用户的请求从新定向到最近的服务节点上,使用户能够就近取得数据,解决了网络拥挤状况,提升用户访问网络的响应速度。mongodb


负载均衡/反向代理数据库

负载均衡:创建在现有网络结构之上,提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽,增长吞吐量,增强网络数据处理能力,提升网络的灵活性和可用性。apache

英文Load Balance ,其意思就是分摊到多个操做单元上进行执行,如web服务器,FTP服务器,企业关键应用服务器和其余关键任务服务器等,从而共同完成工做任务。
json

反向代理:设计模式

指以代理服务器来接受internet上的链接请求,而后将请求转发给内部网络上的服务器,并将从服务器上获得的结果返回给internet上请求链接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

 F5(4层)

四层负责均衡:是经过报文中的目标地址和接口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器与请求客户创建TCP链接,而后发送Client请求的数据。

上图,在四层负责设备中,把client发送的报文目标地址(原来是负载均衡设备的IP地址),根据均衡设备设置选择的web服务器的规则选择对应的web服务器IP地址,这样client就能够直接跟此服务器创建TCP链接并发送数据。

Nginx (7层)

是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。

是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器

Varnish :

是一款高性能的开源http加速器。

Web应用层:

tomcat:是一个免费的开放源代码的应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是不少的场合下广泛使用,是开发和调试JSP的首选。

jboss:是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,能够在任何商业应用中无偿使用,而不用支付费用,JBoss是一个管理EJB的容器和服务器,支持EJB1.1,EJB2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的web容器,通常与tomcat或jetty邦定使用。

spring:Spring是一个开源框架。

struts2Struts2是一个基于MVC设计模式的Web应用框架,它本质上至关于一个servlet,在MVC设计模式中,Struts2做为控制器(Controller)来创建模型与视图的数据交互。

业务层:

mina:Apache Mina是一个可以帮助用户开发高性能和高伸缩性网络应用程序的框架。它经过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。用于内部服务间调用。单线程。

spring:Spring是一个开源框架。

ibatis:iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2002年发起的开放源代码项目。于2010年6月16号被谷歌托管,更名为MyBatis。是一个基于SQL映射支持Java和·NET的持久层框架

基础服务层:

路由:对数据库进行切分,增长吞吐量。

zookeeper:

ZooKeeper是一个 分布式的,开放源码的 分布式应用程序协调服务,是 Google的Chubby一个 开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
router:
可被 路由的协议(Routed Protocol)由 路由协议(Routing Protocol)传输,前者亦称为 网络协议
对数据库进行切分,增长吞吐量。对不一样的表进行垂直切分到数据库,当数据库的表中的一个表超过必定大小时,进行水平切分。
Zookeeper:zookeeper在这里提供分布式应用协调服务。
数据收集:
flume:
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各种数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各类数据接受方(可定制)的能力。
         MQ:
rabbitMQ:
MQ全称为Message Queue,  消息队列 (MQ)是一种 应用程序对应用程序的通讯方法 。应用程序经过读写出入队列的消息(针对应用程序的数据)来通讯,而无需专用链接来连接它们。消息传递指的是程序之间经过在消息中发送数据进行通讯,而不是经过直接调用彼此来通讯,直接调用一般是用于诸如 远程过程调用 的技术。排队指的是应用程序经过 队列来通讯。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ。
Cache:
memCache:
memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提高网站的访问速度,尤为对于一些大型的、须要频繁访问数据库的网站访问速度提高效果十分显著
搜索:
solr: Solr是一个 独立的企业级搜索应用服务器 ,它对外提供相似于Web-service的API接口。 基于lucene进行全文搜索。 用户能够经过http请求,向搜索引擎服务器提交必定格式的XML文件,生成索引;也能够经过Http Get操做提出查找请求,并获得XML/json格式的返回结果。
lucene:Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个 开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分 文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础创建起完整的全文检索引擎。 Lucene是一套用于 全文检索和搜寻的开源程式库,由 Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,可以作全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费 开源工具。就其自己而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们常常提到信息检索程序库,虽然与搜索引擎有关,但不该该将信息检索程序库与 搜索引擎相混淆。
计算: MR MR模型是无共享的架构,数据集分布至各个节点。处理时,每一个节点就近读取本地存储的数据处理(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发(至reduce节点),避免了大量数据的传输,提升了处理效率。
Storm:
数据存储:

mogileFs:MogileFS是一套高效的文件自动备份组件。

oracle:关系型数据库。

mysql:关系型数据库。

MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不一样的表中,而不是将全部数据放在一个大仓库内,这样就增长了速度并提升了灵活性。 MySQL所使用的 SQL 语言是用于访问 数据库 的最经常使用标准化语言。MySQL 软件采用了双受权政策,它分为社区版和商业版,因为其体积小、速度快、整体拥有成本低,尤为是 开放源码 这一特色,通常中小型网站的开发都选择 MySQL 做为网站数据库。 因为其社区版的性能卓越,搭配  PHP  和  Apache  可组成良好的开发环境。
hadoop: Hadoop是一个由Apache基金会所开发的分布式系统基础架构 用户能够在不了解分布式底层细节的状况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个 分布式文件系统 (Hadoop Distributed File System),简称HDFS。HDFS有高 容错性 的特色,而且设计用来部署在低廉的(low-cost)硬件上;并且它提供高吞吐量(high throughput)来访问 应用程序 的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,能够以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
hbaseHBase是一个分布式的面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储同样,HBase在Hadoop之上提供了相似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不一样于通常的关系数据库,它是一个适合于非结构化数据存储的数据库。另外一个不一样的是HBase基于列的而不是基于行的模式。
mongodb:
mongodb: 是一个基于 分布式文件存储的数据库。 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间的产品。
redis:
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工做由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
是一个独立的企业级应用服务器,对外提供web-service的API接口,用户能够经过http请求,向搜索引擎服务器提交必定格式的XML文件生成索引,也能够经过http Get操做查找请求,并获得XML/json类型的返回结果。
redis是一个key-value存储系统。和Memcached相似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。