为什么80%的码农都做不了架构师?>>>
语言方案:
优:
并行,容错,调试,热部署,测试,高阶函数,柯里化(适配器),惰性求值,延续(没有栈。迭代。尾递归。单参数--单返回值。WEB,JETTY。不需要栈。stackless),模式匹配.
劣:
调用(使用栈,浪费空间),
数据提交:
0,流提交(免解码);
1,服务器提交===用户体验===请求已经发出去了;
2,无脚本;
3,快速验证(错误频率记忆===》检查项目顺序调整)。
数据获取(缓存):
1,流缓存(免编码);
2,检索数(XML)据+商品数据(HTML)+UI元素(XSL+图片);
3,全缓存(对所有除事务以外的内容包括数据使用缓存+使用URL变形做内容更新);
4,内容更新管理。
内容策略:
1,所有内容在系统处理全程保持流(字节)的形式。不解码,不编码;
处理器调度:
1,动态优先级(IO任务优先:网卡,数据库,磁盘。内存任务优先,IO任务排队);
2,抢占;
3,水平调度;
4,垂直调度;
5,智能调度引擎(自适应调度);
6,资源定义:处理器,内存,网络,磁盘+数据库
内存管理:
1,内存调度;
2,边界控制:溢出,死锁(内存争夺)。
3,缓存控制(开源库);
4,关闭虚存。
5,服务降级。
数据库:
1,取结果条数;
资源管理:
1,数据库连接;
2,数据库锁(没有锁。不设计任何并发更新);
3,无依赖设计(所有部件独立工作。互不依赖);
循环控制:
1,没有循环(用函数式语言);
数据结构测试:
1,数据结构性能退化;
压力测试:
1,平均响应时间;
2,90th%响应时间;
3,突发活动(任意组合);
4,阶段性增加负载;
5,通量;
6,处理器,内存,网卡,磁盘负载时间;
7,图片。
恢复测试:
1,系统的恢复时间;
兼容性测试:
1,浏览器;
2,OS;
3,网络(不同接入点);
位置测试:
1,偏远地区;
2,特大城市;
3,中小城市;
4,四级城市;
5,乡村;
6,其它特殊接入点;
UI测试:
1,外观;
2,内容测试(语法,语义,流程,标题);
3,移动设备;
4,图片页;
前端:
1,客户端缓存+内存缓存+数据库缓存(与内存缓存互为独立;没有重复缓存);
2,内容压缩;
3,网卡加速,SSL加速,XML加速,HTML压缩;
4,UI元素的分步加载(XSL INCLUDE);
5,前端反向代理
系统运行监控(运维):
1,系统状态监控:节点工作状态:
2,服务追踪:用户事务日志(IP标识。使用在线事务审计数据);
2,报“错”机制--》电子邮件;
网络负载均衡可选方案:
1,基于特定服务器软件的负载均衡
2,基于DNS的负载均衡
3,基于四层交换技术的负载均衡(收信IP!=送信IP)
4,基于七层交换技术的负载均衡
5,站点镜像技术
网卡集群:
1, 上行假设轻负载。但要防攻击(DoS);
2,
安全:
1,端口关闭;
2,一阶段审计;
机房服务质量监督:
1,防火墙策略;
2,带宽;
3,接入稳定性;
4,路由可达性。
5,共享或独享带宽。
运筹学:
规划论:线性,动态;
排队论。
最短任务优先(排队论):
1,快速疏散。短的走的快;短任务拉开=》时间上的均匀分布;
2,最短周转时间;
3,最短服务时间;
4,全系统优化(人,机,软)。
内存管理开销:
1,GC的线程开销(内存,CPU周期,线程管理,计数);
2,程序不创建任何对象。所有对象在对象池(COMMONS POOL)中获取(和创建)。对象数量的多少由程序自动决定。但是要记得在线程任务结束后主动还回对象(这才是关掉GC的真正开销。因为从对象池获取对象与NEW一个对象的代码量其实是一样的。这里指的是程序员角度的开销);
CPU优先级:
1,CPU角度==》全部非阻塞任务的随时待“命”。最小程度的IO捆绑;
有的:
协程。微线程。无栈。进程。
要求:
大量大文件请求(压缩,缓存,IO压力);
大量数据请求(主要:商品数据,索引数据==》IO压力);
大量事务(购买,支付==》数据库更新);
主要挑战:大的(效率,带宽,内存==》索引数据,商品数据)。多的(效率)。
IO效率==》字节流。
内存的主要消耗者分析:UI,事务优先。其余全用于索引数据,商品数据的缓存与工作空间(硬盘==》网卡拷贝)。
处理器不用分析。网卡比特流用专用网卡解决。内容用XML加速器。
专用设备:
专用网卡。专用内存。专用硬盘。专用主板。专用CPU。
冗余设备:
内存,硬盘,CPU,网卡,电源。
系统级设备:
双机热备。
数据设备:
数据冷备,热备,灾备。
服务器论坛学习。
加速设备:
网卡(比特流),XML,SSL。
而MAP/REDUCE因为是在生产环境中提出并成功应用的生产计划/模式,天生具有很强的实践性。
MAP/REDUCE加工备忘:
1,有管理的,全方位的作业调度:水平调度---给谁做;垂直调度--谁先做;内部调度---机器系统调度;外部调度---人机系统调度);
2,调度策略的实时调整(系统性能实时评估-->反馈机制---》策略调整(量化调整与方案调整));
3,内部作业的划分(几个MAP,几个REDUCE):
4,内存模型(时变特性);
5,中间结果 - 平面;
6,系统进化(约束适应,新质量,新功能);
7,延续,闭包的价值分析(与对象的对比);
8,规则引擎的应用;
9,接口封装的形式(REST,XML,WEB SERVICE)与ESB的应用;
内部作业的划分详细包括:
1,UI引擎(内容服务--小内存+大磁盘,高带宽:客户==首页+搜索+购买+支付+注册,商品,商务,图片);
2,数据引擎(数据服务:索引,商品,关联商品,物流,支付,评论,交易历史,商务支持,交易统计);
3,事务引擎(订单,支付,评论,评论审核,注册,商务事务,审计);
5,I/O引擎;
6,性能/成本引擎:浏览器缓存(更新周期=日期后缀)+内容压缩=》带宽
相关备忘:
架构目标的种类:
1,抽象建模---多主体系统。自由系统。提供相对自由的资源分配模型;
2,事务处理---单主体系统。服务型系统。对外强调服务。内部则强调个体服从整体。所以个体是不考虑的。只考虑整体。所以只有一个主体,即整体。这样的系统没有个体---象一支军队。存在的是一个Team,不是人;
3,实时系统---无主体系统。响应型系统。不是强调,而是必须做到即时响应。在这样的系统中,什么都不存在。所有主体都位于系统以外。考虑问题时,都不考虑系统。考虑的全是系统以外的因子。系统被假设为不存在的。比如,可以假设它为上帝,将满足你的所有要求。上帝是不需要考虑的。因为她是完美的。她没有缺陷。她将响应你全部的请求;
4,图形系统---工具型系统。领域系统。可有主体,可没有主体。都行;
5,云计算---单主体系统。事务型系统。服务型系统。强调整体性能与效率。个体同样不考虑(需要对象模型的分析性平台除外)。
6,。。。。。。
领域建模相关备忘:
1,领域建模需要对相关领域进行元操作提取。也就是说,这种系统的需求分析不应该具体化。而应该保持一定程度上的抽象性。即,用户说的话,我们记下来,并且写到系统中去。详细设计的目的不是将用户需求全都变成具体功能,而是该具体的具体,该抽象的抽象。具体与抽象的边界要与用户进行反复的确认与理解才能得到。该抽象的被具体了,与该具体的被抽象了,都是不对的。
需要的是脑子。
http://www.translatorsbase.com/UserAccount.aspx