我最近一直在找适合将来用于公司大型bs,b2b b2c的基础架构。
实际情况是要建立一个bs架构b2b、b2c的网站,当然还包括wap站点、手机app站点。
一、现有公司技术人员现状:
1、熟悉asp.net页面级开发、页面级处理的后端人员。
基本特点:掌握小型单站、单页的相关开发技术。
技术熟练度为:asp.net原理基础、asp.net webform控件中等、jquery基础、js初步到基础、sql基础到中等。
面对大型站点可能存在的弊端:
- a、不熟悉大型环境的架构;
- b、对站点、页面在大型站点吞吐量下可能面对的问题应对能力有限;
- c、因为并不使用一些高级的页面以外的语法和库,涉及到这些功能的编写基本能力比较空白,特别是比如io、队列、异步同步这些协调性要求高的操作,不习惯设想考虑恶劣情况;
- d、长期依赖sql层来处理业务逻辑,缺乏对大型站点可能涉及的技术认识和熟练程度;
- e、后端长期使用三层所以结构比较明溪,前端就像经理们说的一样,开发方式混乱,造成难以维护,和bug重复等问题。
2、熟悉jquery、css、html能切图的ui人员。
- a、作为页面级效果、特效、界面的制作能力已经足够;
- b、在建站过程中可能太多任务化目标化,如果可能的话,应该更积极地参与view层的jquery 、js的开发工作;
- c、应该还缺乏大型站点整站ui、css、js的规划和布局能力和技能。
- d、在大型站点的情况下,优化多js、css文件的发布合并、压缩,可以有效的降低基础流量消耗和连接数压力;
3、要应对大型项目的测试,我认为公司还没有起码的测试团队,也没有开发团队里的明显的模块测试、相互测试、以及明显的迭代机制。
- a、我不那么熟悉公司的测试组,但是测试组似乎是在做黑盒测试,这个在大型项目里说要栽跟头的;
- b、缺乏模块级、代码级白盒测试的机制;
- c、一线开发似乎很缺乏多人互助,互相检查代码的情况,靠开发者个人自己,自管一滩这在大型项目开发的时候势必会引发一系列的问题;
- d、前端没有使用可多人维护的分层的明确的软件结构,应该引入相关前端层面的分层框架结构,来使得前端风险更可控制;
4、数据库和运维人员。
- a、公司应该是拥有足够能力的微软操作系统、数据库和webserver产品的运维人员,但是这在长远来说,是不够的;
- b、假定公司因为原有人员大量.net技术为主、加之微软最近对.net的跨平台和种种开源,将公司将来的大型架构定义在linux平台基础上,那公司就需要有一定量的linux运维人员;
- c、现在的数据库管理相对松散,甚至可以说不存在都不为过,大型项目中可能涉及的环境从简单的测试、开发、生产三个可能是以服务器台来计算的环境,将演变成以前端web和入口服务器集群(入口层)、中间业务逻辑处理中间件集群、缓存服务器集群(在线业务层、缓存数据层)、后端活跃热数据的数据库集群、历史数据仓库(在线数据层、近线统计分析查询数据层),并且可能生产环境和准生产环境都要长期互相独立并且互相代码数据迭代似地上线和备份,以保证上线以前有足够的测试机会,这句需要同时有内外网2个环境集群,可能为开发还有另外准备第三个或者从内部集群里开拓出一部分来给开发使用。
- d、这就会需要相当一部分的除了基础linux维护人员,可能还需要各种运维方面的技能 应该会涉及所使用的数据仓库软件(hbase)的部署和维护、sql数据库集群架构(准mysql集群、包括mysql社区分支版本MariaDB、相关集群软件比如mycat)的部署和维护、缓存数据库集群(redis集群、mencached集群,比如redis官方3.0集群的配置或者更简单的redis集群代理软件Codis等)的部署和维护、前端web服务器(可选的有国内不开源的一体式的.netweb方案jesux、Apache挂mod_mono或Nginx挂mod_mono以及将来的微软官方的跨平台webserver端)和.net环境(第三方。net实现的mono、或者将来的微软官方的。net core跨平台运行时环境)的部署和维护;
- 短期可以由开发人员里熟悉以上内容的人来管理,长期肯定是要配备的;
二、整体软件架构思想:
由于公司的b2c、b2b业务构想还只是雏形,所以只能够大概设定一个软件架构的思路:
首先,业务逻辑上,要及时积极定义出历史数据,将其及时移动到数据仓库层级,这样能大大降低强事务sql数据库层级的压力以及提高该层级的性能表现;
然后进行业务拆分,将不同业务操作类型从入口层以后分配到不同的业务处理集群,这样可以降低其后每个集群的压力,提升性能表现;
凡是可以不必实时的操作,一定要区分出来,采取队列处理机制,可以预处理的行为积极进行预处理;
如果可以的话,将sql层面的表结构就考虑好,多插入少更新,积极地努力回避事务死锁问题;
Linux Web .net 架构:
-
- http反向代理:最前端使用Nginx之类的http反向代理服务器集群和cdn加速网站响应,静态的内容的请求可能因为这一层就被处理掉了大部分;
- 性能分析、监控:这中间可以插上各种日志、分析性能、监控等各种服务套件,这是linux的常规优势;
- 负载调度:Nginx之后是负载均衡调度服务机制或服务器集群,好在现在云服务器都有这个服务,很简单;
- 应用程序服务器集群(分业务、分服务):然后是.net的web server集群,并且应该根据业务拆分和服务拆分为多组集群,说白了就是这些应用服务器有很多不同业务分工的服务器端代码在运行,每一份代码应对一种业务需求或者服务需求,然后每一份代码有多台服务器视为一组的区分开来,每个服务、业务逻辑处理上动态负载均衡(也就是A应用服务器集群处理一些类型的业务,b可能处理另一些类别,然后c可能提供一些服务类型的给自己或外部使用),技术上。.net在linux下的应用程序服务器可以选择使用Nginx(这时候其作为普通正向http server)或者Apache来配合mod_mono,开始可以考虑用国产闭源asp.net容器实现的jexus,我因为亲自考察了官方技术人员和相关社区的情况考虑可能的话做大了以后不用它,闭源、文档混乱缺乏、开发者也看似不够正视生产环境用户,是国产软件的诸多问题,虽然初期jesux是简单强大的容器实现;
- 消息队列服务器集群:常见跟在应用服务器后面的有消息队列服务器,提供供前者处理的跨服务器的稳定的相对缓慢的应用程序外部队列;
- 搜索引擎服务器集群:搜索在web是家常便饭经常也是用户体验的重要一环,所以最终难免有搜索引擎,作为数据库内容的一种入口提供方式;
- 多种缓存服务器集群:
- 又分内存比如用于告诉内存缓存的memcached集群、同样是内存 速度不亚于前者又带硬盘序列化的redis集群,内存nosql主要指的redis,mc只能用于可丢失的缓存用,而redis可以起到很重要的作用,成为完美的硬盘数据库和用户操作响应直接的中间加速器,由于redis带硬盘序列化,所以非关键增删改都可以基于redis这个内存数据库处理,如果配合使用上比如Codis这样的redis集群代理入口的话,单机的内存限制就在也不是限制了,因为redis单线程模型可以使用大量内存足够cpu较差的微型瘦服务器来参与在集群里,得到一个性能很好的全内存性能带硬盘备份的缓充容器了,
- 以及nosql基于优化的硬盘读写引擎比如谷歌支持tb级海量数据的leveldb引擎、facebook的RocksDB引擎据说比谷歌的那款数据多的 时候性能更佳的诸多硬盘nosql数据库产品,国产的有主要基于leveldb的ssdb、和主要基于RocksDB的ardb,硬盘nosql数据库的特点:数据相对内存nosql的稳定安全(除了写瞬间出现问题的几率高点,就是要么写入了,要么没能写入丢了),读写性能理论上有机会配合多服务器ssd硬盘得到接近内存nosql的机会,关键属性是容量没有内存的限制,有很适合模糊查询,当然实时性要求不能太高,适合用来存用户日志等量大但是重要程度次级的信息;
- 文件服务器:web难免有不少的静态图片,某些业务逻辑下用户上传的附件文件可能更不少等,一般需要单独的文件服务器群来承载,虽然cdn可以分担掉不小的图片方面的压力,还是要应对用户随机的上传、下载问题还是得用方案的,linux下分布式文件服务器方案方便又多样,比如NFS、windows兼容协议的samba、FastDFS;
- 分布式数据库集群:我本来以为我找不到方便的支持强事务的读写分离 高可用 分裤分表的开源免费方案,我本来都打算放弃数据库这一层之间跳到用大数据数据库去了,直到我发现继承了淘宝mysql分库分表方案的cobar的mycat方案,该方案已经社区很活跃,国内已经有很多大公司使用,是一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群;
- 大数据层:这里hadoop好像是目前稳定文档多的唯一选择,作为数据库使用的话,基于hadoop的hbase几乎是必然选择,国内外很多大互联网公司的很大一部分数据都存储在hbase上,可以说是hbase承载着今天的互联网;
架构小结:
上面就是我觉得在业务逻辑不那么清晰的情况下,我为将来的业务承载准备的大型bs的基础数据技术硬性构架的技术选择,主要的来说由http反向代理打头 后面跟上带负载均衡和业务分拆、服务分开的多路应用服务器集群,然后配上内存nosql集群应对最高速要求的热数据,后面跟上强事务sql数据库集群和也有高速查询反应的数据仓库级数据产品hbase,短期可以在其中混上文档型数据库比如MongoDB来应对短期内的多变需求,因为文档数据库是不必定义复杂的字段架构的,长期来说文档数据库的意义有待商榷,因为具资料mogodb的高并发连接情况下的速度始终不敢恭维。
应用程序层使用linux版本。net第三方运行时实现mono,并不算多冒险,国外世界前200位的IT网站有若干曾经多年使用mono+linux方案,缓存层redis几乎是唯一的选择,而选择Codis这样一个集群产品,是因为在开发的时候你可以大可不必挂上Codis,Codis是完全redis协议方式的,所以应用程序方面完全不会有任何感觉的;同样MyCat也是这样的一款产品,、它自己内部用它自己的方式协调后面的多台服务器的读写,你只需要把他当作基础的mysql协议的数据库那样去对待即可,至于hbase长期来说必然使用,短期你甚至可以无视它,等到你用到他了,并且按照我说的那样在历史数据的方面用它,你也自然不会觉得有什么难度,说到底hbase的配置部署和硬件质量和数量这些要求才是问题,使用的本身并没有什么难度。
名词解释:
1、bs架构
B/S结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。B/S结构是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server同数据库进行数据交互。 这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
2、b2b
B2B(也有写成 BTB,是Business-to-Business的缩写)是指企业对企业之间的营销关系,它将企业内部网,通过 B2B 网站与客户紧密结合起来,通过网络的快速反应,为客户提供更好的服务,从而促进企业的业务发展。近年来 B2B 发展势头迅猛,趋于成熟。
3、b2c
B2C是Business-to-Customer的缩写,而其中文简称为“商对客”。“商对客”是电子商务的一种模式,也就是通常说的直接面向消费者销售产品和服务商业零售模式。这种形式的电子商务一般以网络零售业为主,主要借助于互联网开展在线销售活动。B2C即企业通过互联网为消费者提供一个新型的购物环境——网上商店,消费者通过网络在网上购物、网上支付等消费行为。
4、wap
WAP的盈利方式主要靠SP点播业务和WAP广告联盟,SP点播业务就是短信点播,彩信,铃声下载,包月服务等,本 小利大,早期的WAP网站靠他挣了不少钱,于是大量低俗网站应运而生,09年央视曝光SP业务存在欺诈用户及被大量WAP低俗网站利用后,SP被移动等运 营商规范整治,投放门槛提高,SP彻底进入寒冬,又加上智能手机普及,有着无数免费的精彩应用,SP逐渐退出WAP江湖。
5、app
6、webform
7、jquery
8、js
9、sql
10、io
I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。 在POSIX兼容的系统上,例如Linux系 统,I/O操作可以有多种方式,比如DIO(Direct I/O),AIO(Asynchronous I/O 异步I/O),Memory-Mapped I/O(内存映设I/O)等,不同的I/O方式有不同的实现 方式和性能,在不同的应用中可以按情况选择不同的I/O方式。
软件里IO经常是读写行为的简写,和读写操作的库的简写。
11、队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
12、异步
并行计算
并行通信
并行处理
13、同步
14、三层 MVC
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。
15、css
16、html html5
17、ui
UI即User Interface(用户界面)的简称。UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、*、充分体现软件的定位和特点。UI还有其它的意义,如Unit Interval,Univ of Iowa,Unlock Instruction,Urgent Interrupt。
18、黑盒测试
19、白盒测试
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方 法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定 的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最重要的技术是路径和分支测试。
20、webserver
Web Server中文名称叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务
21、.net
.NET就是微软用来实现XML,Web Services,SOA(面向服务的体系结构service-oriented architecture)和敏捷性的技术。对技术人员,想真正了解什么是.NET,必须先了解.NET技术出现的原因和它想解决的问题,必须先了解为什么他们需要XML,Web Services 和 SOA。技术人员一般将微软看成一个平台厂商。微软搭建技术平台,而技术人员在这个技术平台之上创建应用系统。从这个角度,.NET也可以如下来定义:.NET是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。从技术的角度,一个.NET应用是一个运行于.NET Framework之上的应用程序。(更精确的说,一个.NET应用是一个使用.NET Framework类库来编写,并运行于公共语言运行时Common Language Runtime之上的应用程序。)如果一个应用程序跟.NET Framework无关,它就不能叫做.NET程序。比如,仅仅使用了XML并不就是.NET应用,仅仅使用SOAP SDK调用一个Web Service也不是.NET应用。.NET是基于Windows操作系统运行的操作平台,应用于互联网的分布式。
22、linux
Linux是一套免费使用和*传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
23、热数据
所谓的“热数据”,并不适用于处理大数据的方式。热数据是纯粹的扩展性问题,你需要把系统的性能调整到最佳,降低系统的延迟同时确保它能够被所有提出访问需求的用户访问到。大数据可视化除了作为分析之用,甚至你从来不会去用到它。事实上,除了分析之外,我们可以把大数据“冷冻”起来。尽管有时候我们会把大数据与新鲜快速的记录一起进行分析,但大数据池至少需要从概念上与活动的热数据隔离开来。否则二者会互相造成不良的影响。
将冷热数据分开存储是公认的最佳实践,无论是存储还是应用,它们都是完全不同的数据。信息不对称的后果是扭曲了市场机制的作用,误导了市场信息,造成市场失灵。如果处在普遍的信息数据缺乏状态下,经济行为的不确定性也会增加,往往会降低市场效率。反之,是过犹不及,即便是在上世纪末所谓“信息爆炸”年代,也远不如当前阶段如此快速的信息积累。据统计,互联网上的数据每两年翻一番,而全球绝大多数数据都是最近几年才产生的。面对似乎逐渐“供大于求”的数据,如何找到有用的信息,成为利用大数据可视化工具的关键问题。
最重要的数据也许并不是那些大数据,而是我们所说的热数据。你也许已经建立了大数据系统,时刻准备从大数据金矿上挖掘潜在的价值,但一定不要忽视其他数据的价值。人们对大数据*追寻的热度终究会降温,但是大数据分析的价值会继续下去。大数据的重点是如何采取正确的策略、流程和方法去从大数据分析中获得价值,比如需要哪些投资,需要培养哪种技能去实施大数据应用等。
24、数据仓库
25、在线
26、近线
所谓近线存储(NearStore),是随着客户存储环境的细化所提出的一个概念,所谓的近线存储,外延相对较广泛,主要定位于客户在线存储和离线存储之 间的应用。就是指将那些并不是经常用到,或者说数据的访问量并不大的数据存放在性能较低的存储设备上。但同时对这些的设备要求是寻址迅速、传输率高。(例 如客户一些长期保存的不常用的文件的归档)。因此,近线存储对性能要求相对来说并不高,但又要求相对较好的访问性能。同时多数情况下由于不常用的数据要占 总数据量的比较大的比重,这也就要求近线存储设备在需要容量相对较大。在业界传统定义的近线存储设备主要为DVD-RAM光盘塔和光盘库设备。但随着存储设备的不断发展,跟据客户存储需求的不同,我们也会把低端的磁盘阵列(例如DS4100)或高端的磁带设备(例如3592)作为近线存储应用设备。
其实对于数据库来说,近线的概念,可以被认为就是不那么快,响应不那么及时,一个操作没有一个可控的最大响应时间范围的这类数据库系统,Hadoop很多传统的读写方式、技术方案就不像hbase那样能够及时、有效的反应。
27、hbase
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。 就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop 项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
全世界大量大型公司的数据都存储在其上。
28、mysql
MySQL[1] 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
29、MariaDB
30、MyCat
MyCat是一位中国hp的系统架构师牵头,基于已经停止开发了的阿里开源的Cobar,所构建的分布式强事务兼容mysql协议的数据库集群中间件。
Mycat 1.4 alpha 版本发布,JDBC方式支持后端所有主流数据库,性能增强并修复一些Bug ,建议当前开发的项目采用。
什么是MyCAT
- 一个彻底开源的,面向企业应用开发的大数据库集群
- 支持事务、ACID、可以替代MySQL的加强版数据库
- 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
- 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
- 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
- 一个新颖的数据库中间件产品
目标
低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
关键特性
- 支持SQL92标准
- 支持MySQL集群,可以作为Proxy使用
- 支持JDBC连接Oracle、DB2、SQL Server,将其模拟为MySQL Server使用
- 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
- 提供高可用性数据分片集群,自动故障切换
- 支持读写分离,支持MySQL双主多从,以及一主多从的模式
- 支持全局表,数据自动分片到多个节点,用于高效表关联查询
- 支持独有的基于ER关系的分片策略,实现了高效的表关联查询多平台支持,部署简单
31、redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都 支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排 序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文 件,并且在此基础上实现了master-slave(主从)同步。
国内微博方案早期包括到现在都是基于Redis的。
32、Memcached
memcached是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但目前被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权释出。
memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。
memcached 的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。 由于memcached通常只是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程式码更新 memcached内的资料。
33、Codis
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务.
34、jexus
Jexus 即 Jexus Web Server,简称JWS,是Linux平台上 的一款ASP.NET WEB服务器。它是 Linux、Unix、FreeBSD 等非Windows系统架设 ASP.NET WEB 服务器的核心程序。
Jexus 即 Jexus Web Server,简称JWS,是Linux平台上的一款ASP.NET WEB服务器,是 Linux、Unix、FreeBSD 等非Windows系统架设 ASP.NET WEB 服务器的核心程序,是企业级ASP.NET跨平台部署的一种可选方案。与其它WEB服务器相比,Jexus不但具有跨平台ASP.NET服务器这样的标志 性特征,同时还拥有内核级的安全监控、入侵检测、URL重写、无文件路由等一系列重要功能和专有特性。
优点是:linux下一站式的asp.net容器,缺点:配置文档缺乏,封闭源代码,不开源,作为国产闭源产品却没有像样的商用案例支持其可靠性和安全性。
35、Apache
2个含义,著名webserver软件,或者Apache软件基金会
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为运作一个开源软件项目的 Apache 的团体提供支持的非盈利性组织,这个开源软件项目就是 Apache 项目。除了Apache,实际上开源的软件里主要的基础的多一半是该基金会管理下或者基于该基金会所管理的软件项目。
36、Nginx
37、mono、mod_mono
mono是指由Novell公司(由Ximian发起,并由Miguel de lcaza领导的,一个致力于开创·NET在Linux上使用的开源工程。
mod_mono 是一个 Apache 的模块,用来在 Unix 和 Linux 等系统下运行 ASP.NET 的页面程序。当然并不限定为Apache,其他webserver也可以有自己的mod_mono。
38、.net core
【初步理解】
.NET Core是14年微软开源政策的一个重要决定的实际行为,就是开源.net内核和支持跨平台包括linux、mac等的编译 部署和支持,可以说.NET Core是其基础的跨平台.net库内核,同时也是基础的运行环境运行库。
.NET Core 是一个开源的、跨平台的 .NET 实现。而 .NET Framework 是基于 Windows 的 .NET 实现,Mono 是 .NET Framework 的一个开源、跨平台的实现。
.NET Core 分为两大块:1).NET Core Framework,2).NET Core Runtime。
.NET Core Framework 的开源代码库托管在 GitHub 上,网址是 https://github.com/dotnet/corefx 。
.NET Core Runtime 即 Core CLR,包含Core JIT Compiler与Core GC(Garbage Collector),目前开源代码还未发布。
【进一步理解】
.NET Core 是新一代 .NET 的基石。
未来,.NET Framework 将是基于 Windows 的一个 .NET Core 发行版,Mono 将是一个跨平台的 .NET Core 发行版。
39、强事务即数据库事务操作符合ACID特性
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域。该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能,它是共享资源、分担费用、共用信道设备及服务的多用途、高效能的无线调度通信系统。
41、死锁、事务死锁、数据库死锁
所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
事务死锁、数据库死锁:如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁定(Locking)发生在当一个事务获得对某一资源的“锁”时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。
42、http反向代理
一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下: 正 向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代 理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
http://bbs.51cto.com/thread-967852-1.html
43、cdn
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
44、负载均衡
45、云服务器
云服务器(Elastic Compute Service, 简称ECS)是一种处理能力可弹性伸缩的计算服务,其管理方式比物理服务器更简单高效。云服务器帮助您快速构建更稳定、安全的应用,降低开发运维的难度和整体IT成本,使您能够更专注于核心业务的创新。
实际上更多意义上 是vps,
46、应用程序服务器
应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序。它提供了访问商业逻辑的途径以供客户端应用程序使用。应用服务器使用此商业逻辑就像调用对象的一个方法一样。 简单的说能实现动态网页技术的服务器叫做web应用服务器。
本文中提到的asp.net容器,其实就是asp.net的运行环境的意思,一般windows下是iis、linux下的就多样了。
47、正向http server 引申词汇 正向代理、、透明代理
一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下: 正 向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代 理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
如果把正向代理、反向代理和透明代理按照人类血缘关系来划分的话。那么正向代理和透明代理是很明显堂亲关系,而正向代理和反向代理就是表亲关系了。
透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。透明代理实践的例子就是时下很多公司使用的行为管理软件。
http://bbs.51cto.com/thread-967852-1.html
48、asp.net容器
本文中提到的asp.net容器,其实就是asp.net的运行环境的意思,一般windows下是iis、linux下的就多样了。
49、 消息队列服务器
“消息队列”是在消息的传输过程中保存消息的容器。
50、 搜索引擎服务器
搜索引擎其实就是和谷歌雅虎百度一样的技术,一般就是指全文搜索引擎组件、实例比如Sphinx,HubbleDotNet,Lucene
51、nosql、内存数据库、硬盘读写引擎、Leveldb、RocksDB
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘*问能够极大地提高应用的性能。当然成本就是巨大的内存和其成本价格。
硬盘读写引擎、Leveldb、RocksDB,随着nosql 内存数据库的涌现,随着时间推移,内存数据库的受限于内存容量的存储空间,和传统硬盘数据库的性能收到压力和挑战,以谷歌和facebook这样的大型公司就先后推出了各自的硬盘nosql kv读写库,即我说的硬盘读写引擎,他们并非直接的数据库,而都是一个c c++可调用的引擎性质库,根据这些引擎有不少开源硬盘数据库项目涌现而出,国内就有主要使用leveldb引擎的ssdb和默认使用RocksDB的Ardb,前者有大量的使用案例,包括百度、360、jd这类大公司,后者也在开源主页上拿出了自己实施部署的实测案例数据。
52、文件服务器
文件服务器是一种器件,它的功能就是向服务器提供文件。它加强了存储器的功能,简化了网络数据的管理。它一则改善了系统的性能,提高了数据的可用性,二则减少了管理的复杂程度,降低了运营费用。
53、NFS
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
54、samba
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
55、FastDFS
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
56、分布式 分布式数据库
什么是分布式计算?所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。分布式网络存储技术是将数据分散的存储于多*立的机器设备上。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但解决了传统集中式存储系统中单存储服务器的瓶颈问题,还提高了系统的可靠性、可用性和扩展性。
分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
57、Cobar
Cobar是关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。
- 产品在阿里巴巴B2B公司已经稳定运行了3年以上。
- 目前已经接管了3000+个MySQL数据库的schema,为应用提供数据服务。
- 据最近统计cobar集群目前平均每天处理近50亿次的SQL执行请求。
- MyCat就是基于Cobar。
58、大数据
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》[2] 中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。大数据的4V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)。
大数据的主要代表技术就是以Hadoop架构为基础的庞大技术产品和体系。
59、hadoop
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
60、文档型数据库 MongoDB
从1989年起,Lotus通过其群件产品Notes提出了数据库技术的全新概念-"文档数据库",文档数据库区别于传统的其它数据库,它是用来管理文档。在传统的数据库中,信息被分割成离散的数据段,而在文档数据库中,文档是处理信息的基本单位。一文档可以很长、很复杂、可以无结构,与字处理文档类似。一个文档相当于关系数据库中的一条记录。
Mongo DB 是目前在IT行 业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。
b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释的更多相关文章
-
b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更新页面显示状态这种方式在运作的,从若干年前简单的ajax流行起来 ...
-
Equinox开源项目CQRS架构分析
CQRS架构下Equinox开源项目分析 一.DDD分层架构介绍 本篇分析CQRS架构下的Equinox开源项目.该项目在github上star占有2.4k.便决定分析Equinox项目来学习下CQR ...
-
MySQL基础架构分析
文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star! 搜索关注微信公众号 码出Offer 领取各种学习资料! MySQL基础架构 一.引言 我们在学习MySQL的时候,迈 ...
-
一、项目基础架构(附GitHub地址)——以ABP为基础架构的一个中等规模的OA开发日志
前言: 最近园子里ABP炒的火热.看了几篇对于ABP的介绍后,深感其设计精巧,实现优雅.个人感觉,ABP或ABP衍生品的架构设计,未来会成为中型Net项目的首选架构模式.如果您还不了解ABP是什么,有 ...
-
从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析
http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...
-
大型Java Web项目的架构和部署问题
一位ID是jackson1225的网友在javaeye询问了一个大型Web系统的架构和部署选型问题,希望能提高现有的基于Java的Web应用的服务能力.由于架构模式和部署调优一直是Java社区的热门话 ...
-
各大型网站架构分析收集-原网址http://blog.csdn.net/lovingprince/article/details/3379710
1. PlentyOfFish 网站架构学习http://www.dbanotes.net/arch/plentyoffish_arch.html 采取 Windows 技术路线的 Web 2.0 站 ...
-
Android基础-系统架构分析,环境搭建,下载Android Studio,AndroidDevTools,Git使用教程,Github入门,界面设计介绍
系统架构分析 Android体系结构 安卓结构有四大层,五个部分,Android分四层为: 应用层(Applications),应用框架层(Application Framework),系统运行层(L ...
-
SpringCloud系列二:Restful 基础架构(搭建项目环境、创建 Dept 微服务、客户端调用微服务)
1.概念:Restful 基础架构 2.具体内容 对于 Rest 基础架构实现处理是 SpringCloud 核心所在,其基本操作形式在 SpringBoot 之中已经有了明确的讲解,那么本次为 了清 ...
随机推荐
-
SAP CRM 通过调试观察CL_CRM_BOL_ENTITY中的数据
这个(BOL里面)最重要的类值得一看. BOL中的每条记录都会在CL_CRM_BOL_ENTIT中表示.至今,我们已经写过一些事件处理器,并且我们已经直接或间接的通过这个类工作.在业务场景中,我们也许 ...
-
BZOJ 1584 DP
显然序列不能超过sqrt(n),因为最差情况是每个都独立答案为n #include <iostream> #include <cstring> #include <cst ...
-
linux配置网卡
我爱折腾.在本地虚拟机里装了linux的环境.要配置linux的网卡文件. 如下: vi /etc/sysconfig/network-script/ifcfg-eth0; 刚装完系统,没有vim , ...
-
iframe跨域访问
js跨域是个讨论很多的话题.iframe跨域访问也被研究的很透了. 一般分两种情况: 一. 是同主域下面,不同子域之间的跨域: 同主域,不同子域跨域,设置相同的document.domian就可以解决 ...
-
WinForm TreeView节点重绘,失去焦点的高亮显示
当用户焦点离开TreeView时,TreeView选中节点仍然高亮,但是颜色符合主题. 设置TreeView.HideSelection = False;可让选中节点保持高亮. 添加重绘事件 Tree ...
-
jquery $.each 和for 怎么跳出循环
jquery $.each 和for 怎么跳出循环 1.for循环中我们使用continue:终止本次循环计入下一个循环,使用break终止整个循环.2.而在jquery中 $.each则对应的使用r ...
-
nginx常用的超时配置说明
client_header_timeout 语法 client_header_timeout time默认值 60s上下文 http server说明 指定等待client发送一个请求头的超时时间(例 ...
-
Android 配置从GitHub上下载下来的不太规则的源代码库,并保证程序正常运行
用过github的朋友一定会发现,我们在github上下载下来的源代码(例子和库),放到eclipse中并不是总能正常运行的,它有可能会出现这样或者那样的错误,例如:找不到jar包,配置文件错误,R文 ...
-
sicily 1176. Two Ends (Top-down 动态规划+记忆化搜索 v.s. Bottom-up 动态规划)
Description In the two-player game "Two Ends", an even number of cards is laid out in a ro ...
-
SpringAOP02 自定义注解
1 自定义注解 1.1 创建自定义注解 从java5开始就可以利用 @interface 来定义自定义注解 技巧01:注解不能直接干扰程序代码的运行(即:注解的增加和删除操作后,代码都可以正常运行) ...