b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释

我最近一直在找适合将来用于公司大型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是家常便饭经常也是用户体验的重要一环,所以最终难免有搜索引擎,作为数据库内容的一种入口提供方式;
    • 多种缓存服务器集群:
      1. 又分内存比如用于告诉内存缓存的memcached集群、同样是内存 速度不亚于前者又带硬盘序列化的redis集群,内存nosql主要指的redis,mc只能用于可丢失的缓存用,而redis可以起到很重要的作用,成为完美的硬盘数据库和用户操作响应直接的中间加速器,由于redis带硬盘序列化,所以非关键增删改都可以基于redis这个内存数据库处理,如果配合使用上比如Codis这样的redis集群代理入口的话,单机的内存限制就在也不是限制了,因为redis单线程模型可以使用大量内存足够cpu较差的微型瘦服务器来参与在集群里,得到一个性能很好的全内存性能带硬盘备份的缓充容器了,
      2. 以及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 NavigatorInternet Explorer服务器安装OracleSybaseInformixSQL Server等数据库。浏览器通过Web Server同数据库进行数据交互。 这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。

2、b2b

B2B(也有写成 BTB,是Business-to-Business的缩写)是指企业对企业之间的营销关系,它将企业内部网,通过 B2B 网站与客户紧密结合起来,通过网络的快速反应,为客户提供更好的服务,从而促进企业的业务发展。近年来 B2B 发展势头迅猛,趋于成熟。

3、b2c

B2C是Business-to-Customer的缩写,而其中文简称为“商对客”。“商对客”是电子商务的一种模式,也就是通常说的直接面向消费者销售产品和服务商业零售模式。这种形式的电子商务一般以网络零售业为主,主要借助于互联网开展在线销售活动。B2C即企业通过互联网为消费者提供一个新型的购物环境——网上商店,消费者通过网络在网上购物、网上支付等消费行为。

4、wap

WAP网站的页面语言是WML,后来的升级版WAP 2.0(也就是所谓的3G版)是XHTML。用户可以借助支持GPRS上网功能的手机,通过WAP获取信息。
WAP的早期版本的页面语言是WMLWML是一种纯粹的页面标记语言,它是一种从HTML继承而来基于XML的标记语言,代码的编写结构比HTML严格。
只支持显示文本和图片信息,界面比较简单,由功能单一的文本,链接和图片组成。为利于W3C开发的标准,05年后WAP由1.0过渡到2.0,WAP 2.0采用了XHTMLCSS作为WML 2.0的底层支持,在功能,性能,安全,传输方面比早期WAP 1.0强大。WAP 2.0支持CSS,支持背景音乐等等。由于特殊的物理环境,WML语言不包含其他脚本语言所包含的花哨功能,因此对内存和CPU的要求相对很低,通过手机内置或应用安装的手机浏览器可以直接浏览WAP网站,市面上绝大多数手机都支持GPRS上网功能,可以浏览所有的WAP 1.0网站,也有相当一部分低端手机,不支持WAP 2.0网站。
WAP一般都是动态页面,主要的编写语言是ASP+ACCESS,也有JSPPHP,以及ASP的过渡版本.net,除了ASP主要使用ACCESS数据库外,后者主要是配合MySQL数据库编写的。
WAP网站的推广方式比较简单,主要靠口碑,群发信息,WAP论坛,友链,WAP网址大全推广,WAP界基本不存在SEO,主流WEB搜索引擎都有WEB转码功能,可以将WEB网站转码为WAP内容供手机浏览。WAP也有很多手机搜索引擎,例如易查,易搜,悟空等等。

WAP的盈利方式主要靠SP点播业务和WAP广告联盟,SP点播业务就是短信点播,彩信,铃声下载,包月服务等,本 小利大,早期的WAP网站靠他挣了不少钱,于是大量低俗网站应运而生,09年央视曝光SP业务存在欺诈用户及被大量WAP低俗网站利用后,SP被移动等运 营商规范整治,投放门槛提高,SP彻底进入寒冬,又加上智能手机普及,有着无数免费的精彩应用,SP逐渐退出WAP江湖。

5、app

APP指的是智能手机的第三方应用程序。比较著名的应用商店有苹果的App Store,谷歌的Google Play Store,诺基亚的Ovi store,还有黑莓用户的BlackBerry App World,微软的Marketplace等。
最近两年,app分发成为各大互联网巨头的新“行当”,在手机厂商和专业应用下载平台的夹击下,不但没有被挤成“夹心饼干”,反而成了可口的“驴肉火烧”。以腾讯应用宝为例,其打破传统应用分发的下载套路,从娱乐和社交的角度去“再造”应用分发平台,开创了一个值得圈点的应用市场新模式,也让我们看到了APP快消化品牌运作的趋势。
基本上泛指移动设备上运行的应用程序。

6、webform

WebForm是微软开发的一款产品,它将用户的请求和响应都封装为控件。让开发者认为自己是在操作一个windows界面。极大地提高了开发效率。
WebForm诞生于2002年。
WebForm负责封装用于用户端显示的数据。
EasyJWeb中,WebForm是一个非常重要,也是使用最为频繁的对象,他充当了在视图及程序之间传输、处理数据的媒介。
asp.net webform 和 asp.net mvc是微软asp.net官方的两套主要架构。

7、jquery

Jquery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需要定义id即可。
jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。
jQuery,顾名思议,也就是JavaScript和查询(Query),即是辅助JavaScript开发的库。

8、js

JavaScript一种直译脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为NetscapeSun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与SelfScheme较为接近。[1] 
为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript

9、sql

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
1986 年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所 以,实际上不同数据库系统之间的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、异步

异步:一种通讯方式,对设备需求简单。我们的PC机提供的标准通信接口都是异步的。
异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位。
异步的另外一种含义是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。
但此处需要明确的是:异步与多线程与并行不是同一个概念.
多线程
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间 执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。[1] 在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(*译作“执行绪”),进而提升整体处理性能。
并行
并行是指“并排行走”或“同时实行或实施”。
在操作系统中是指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。对比地,并发是指:在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行)。

并行计算

并行机上所做的计算,又称高性能计算或超级计算。

并行通信

并行通信是把一个字符的各数位用几条先同时进行传输。在两个设备之间实现并行通信的接口就是并行接口,并行接口中的每条数据线的长度必须相同。

并行处理

并行处理是一种有效地强调开发计算过程中并行事件的信息处理方式。

13、同步

同步指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。
同步(英语:Synchronization),指在一个系统中所发生的事件(event),之间进行协调,在时间上出现一致性与统一化的现象。在系统中进行同步,也被称为及时(in time)、同步化的(synchronous、in sync)。

14、三层 MVC

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。

MVC(模型Model-视图View-控制器Controller)是一种架构模式,可以用它来创建在域对象和UI表示层对象之间的区分。
同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。
在三层架构中没有定义Controller的概念。这是最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

15、css

级联样式表是一种用来表现HTML标准通用标记语言的一个应用)或XML标准通用标记语言的一个子集)等文件样式的计算机语言
CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。

16、html html5

超文本标记语言,标准通用标记语言下的一个应用。
超文本就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。
超文本标记语言的结构包括头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。
html5
万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言HTML)的第五次重大修改(这是一项推荐标准[1] 、外语原文:W3C Recommendation、见本处参考资料原文内容:[1] )。

2014年10月29日,万维网联盟宣布,经过接近8年的艰苦努力,该标准规范终于制定完成

17、ui

UI即User Interface(用户界面)的简称。UI设计则是指对软件人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、*、充分体现软件的定位和特点。UI还有其它的意义,如Unit Interval,Univ of Iowa,Unlock Instruction,Urgent Interrupt。

18、黑盒测试

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。

19、白盒测试

白盒测试[1] 又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件, 白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路 径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。

采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方 法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定 的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最重要的技术是路径和分支测试。

20、webserver

Web Server中文名称叫网页服务器或web服务器WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务

21、.net

.NET就是微软用来实现XMLWeb ServicesSOA(面向服务的体系结构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操作系统,是一个基于POSIXUNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位64位硬件。Linux继承了Unix网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机平板电脑路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。

23、热数据

大数据时代的到来既是悄悄的,又是波澜壮阔的,人们还没有完全反应过来时,大数据可视化时代已经到来。在人们平时接触的数据中,有一些数据不仅很多,而且用户访问率很高,但这些数据不一定就是大数据,而是“热”数据。因此就需要我们用“大数据思维”来处理这些数据。

所谓的“热数据”,并不适用于处理大数据的方式。热数据是纯粹的扩展性问题,你需要把系统的性能调整到最佳,降低系统的延迟同时确保它能够被所有提出访问需求的用户访问到。大数据可视化除了作为分析之用,甚至你从来不会去用到它。事实上,除了分析之外,我们可以把大数据“冷冻”起来。尽管有时候我们会把大数据与新鲜快速的记录一起进行分析,但大数据池至少需要从概念上与活动的热数据隔离开来。否则二者会互相造成不良的影响。

将冷热数据分开存储是公认的最佳实践,无论是存储还是应用,它们都是完全不同的数据。信息不对称的后果是扭曲了市场机制的作用,误导了市场信息,造成市场失灵。如果处在普遍的信息数据缺乏状态下,经济行为的不确定性也会增加,往往会降低市场效率。反之,是过犹不及,即便是在上世纪末所谓“信息爆炸”年代,也远不如当前阶段如此快速的信息积累。据统计,互联网上的数据每两年翻一番,而全球绝大多数数据都是最近几年才产生的。面对似乎逐渐“供大于求”的数据,如何找到有用的信息,成为利用大数据可视化工具的关键问题。

最重要的数据也许并不是那些大数据,而是我们所说的热数据。你也许已经建立了大数据系统,时刻准备从大数据金矿上挖掘潜在的价值,但一定不要忽视其他数据的价值。人们对大数据*追寻的热度终究会降温,但是大数据分析的价值会继续下去。大数据的重点是如何采取正确的策略、流程和方法去从大数据分析中获得价值,比如需要哪些投资,需要培养哪种技能去实施大数据应用等。

24、数据仓库

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。 
我认为基本上今天不支持强事务的大数据数据库、海量支持的数据库都可以算是一种数据仓库方案。

25、在线

在线存储(OnStore)是工作级的存储,在线存储的最大特征是存储设备和所存储的数据时刻保持“在线”状态,可以随时读取和修改,以满足前端应用服务器或数据库对数据访问的速度要求。其中最主要的在线存储是磁盘存储。早期的在线存储设备主要是服务器内置硬盘,随着对存储的发展,现在在线存储设备还包括光纤磁盘阵列或SCSI磁盘阵列等磁盘设备。在线存储价格相对昂贵,但性能最好。大多数情况下,我们可以认为客户的核心应用都是采用这种存储形式的。
对于数据库来说,能够基本提供及时或可预计时间内响应的数据库系统是在线数据库。

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 作为网站数据库。由于其社区版的性能卓越,搭配 PHPApache 可组成良好的开发环境。

29、MariaDB

MariaDB 数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英 语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQLMyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎

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

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,*使用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 transactionend transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
特性
事务是恢复和并发控制的基本单位。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
一般来说只有传统sql数据库才支持强事务。
40、集群

集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域。该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能,它是共享资源、分担费用、共用信道设备及服务的多用途、高效能的无线调度通信系统。

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、负载均衡

负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器FTP服务器企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

45、云服务器

云服务器(Elastic Compute Service, 简称ECS)是一种处理能力可弹性伸缩计算服务,其管理方式比物理服务器更简单高效。云服务器帮助您快速构建更稳定、安全的应用,降低开发运维的难度和整体IT成本,使您能够更专注于核心业务的创新。

实际上更多意义上 是vps,

VPS(Virtual Private Server 虚拟专用服务器)技术,将一部服务器分割成多个虚拟专享服务器的优质服务。实现VPS的技术分为容器[1] 技术,和虚拟化技术[2] 。 在容器或虚拟机中,每个VPS都可分配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应 用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。VPS为使用者提供了管理配置的*, 可用于企业虚拟化,也可以用于IDC资源租用。
IDC资源租用,由VPS提供商提供。不同VPS提供商 所使用的硬件VPS软件的差异,及销售策略的不同,VPS的使用体验也有较大差异。尤其是VPS提供商超卖,导致实体服务器超负荷时,VPS性能将受到极 大影响。相对来说,容器技术比虚拟机技术硬件使用效率更高,更易于超卖,所以一般来说容器VPS的价格都高于虚拟机VPS的价格。
这些VPS主机以最大化的效率共享硬件软件许可证以及管理资源.。每个VPS主机都可分配独立公网IP地址、独立操作系统、独立超大空间、独立内存、独立CPU资源、独立执行程序和独立系统配置等. VPS主机用户除了可以分配多个虚拟主机及无限企业邮箱外, 更具有独立主机功能, 可自行安装程序, 单独重启主机.
比如国内有阿里云、腾讯云、小众一点的就更多了比如景安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

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件
Sphinx单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创 建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。
也有完全模仿谷歌引擎的Lucene系列,包括java版本和。net版本,
Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。开发人员可以基于Lucene.net实现全文检索的功能。
Lucene.net是Apache软件基金会赞助的开源项目,基于Apache License协议。
Lucene.net并不是一个爬行搜索引擎,也不会自动地索引内容。我们得先将要索引的文档中的文本抽取出来,然 后再将其加到Lucene.net索引中。标准的步骤是先初始化一个Analyzer、打开一个IndexWriter、然后再将文档一个接一个地加进 去。一旦完成这些步骤,索引就可以在关闭前得到优化,同时所做的改变也会生效。这个过程可能比开发者习惯的方式更加手工化一些,但却在数据的索引上给予你 更多的灵活性,而且其效率也很高。
HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件。开源协议是 Apache 2.0。HubbleDotNet提供了基于SQL的全文检索接口,使用者只需会操作SQL,就可以很快学会使用HubbleDotNet进行全文检索。 HubbleDotNet可以实现全文索引和查询、多域检索和排序、分组统计、消重、分类、聚类、多表关联查询等等一系列全文检索和数据挖掘功能。 HubbleDotNet提供开放的数据库适配器接口,可以和各种数据库完美整合,为各种数据库系统附加全文检索和数据挖掘功能。 HubbleDotNet设计了较为完善的并发控制程序,数据的增删改查可以多线程同时并发进行,没有任何冲突。HubbleDotNet还进行了缓存和 内存管理设计,可以帮助用户最大限度的提高查询的效率。HubbleDotNet力争在未来的几年内超过Lucene.net成为.net开发环境中最受 欢迎的全文检索组件。

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、文件服务器

文件服务器是一种器件,它的功能就是向服务器提供文件。它加强了存储器的功能,简化了网络数据的管理。它一则改善了系统的性能,提高了数据的可用性,二则减少了管理的复杂程度,降低了运营费用

文件服务器(fs服务器),具有分时系统文件管理的全部功能,提供网络用户访问文件、目录的并发控制和安全保密措施的局域网(LAN)服务器。
计算机局域网中,以文件数据共享为目标,需要将供多台计算机共享的文件存放于一台计算机中。这台计算机就被称为文件服务器。
文件服务器具有分时系统管理的全部功能,能够对全网统一管理,能够提供网络用户访问文件、目录的并发控制和安全保密措施。
“文件服务器“英文是File server语境【文件系统】
一台特殊功能的计算机,其主要目的是向客户机提供文件服务。文件服务器可以是一台能够运行其他应用的通用计算机,也可以是一台专门提供文件服务的专用计算机

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、大数据

大数据(big data,mega data),或称巨量资料,指的是需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。[1] 

在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》[2] 中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。大数据的4V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)。

大数据的主要代表技术就是以Hadoop架构为基础的庞大技术产品和体系。

59、hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
[1] Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

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操作。

上一篇:需求规格说明书——阿里八八“好记”APP


下一篇:附加数据库对于服务器失败(Microsoft.SqlServer.Smo),无法升级数据库,因为它是只读的,或者具有只读文件