最近看了一篇报道,移动互联网开始降温:”人才热”退烧,虽然身为一个非移动互联网行业且非云计算行业的外行人,还是忍不住擅自拍脑袋一下,这两个热门行业的前景。

首先挑明自己的观点,移动互联网英雄气短,云计算平台波澜壮阔。

为什么要这么说呢,单从国内很多人把移动互联网和传统互联网放在一个层次上比较就觉得他真的是英雄气短了。移动互联网大热,其实大家不是对互联网大热,而是对移动设备这个Client大热,不过Client带来的是什么,其实不过多了一个显示层,多了一个介入互联网的介质而已,相当于浏览器和application之于PC。所以其实移动互联网只是当今互联网的一个部分,或者说是一个补充,而并不能单独拿出来把玩。大家可能会笑话Instangram这些创业神话,不是正好给你的耳光吗,其实不然,Instangram之类的app成功,并不是因为他做的是移动应用而成功,Instangram说到底是利用移动设备的特性,简化了用户分享照片这个行为,而其,真正的背后是后台数据库搭起来的照片分享互联网服务的成功,Instangram最后接受了facebook的报价,他们本质是成为了互联网公司的一个移动终端部分。这也是大多数热门app最终的走向。当然部分游戏是除外的。移动设备的普及,很多以前不可能的介入方式成为了可能,但介入方式的增加最后还是汇入了传统互联网的海洋。他们永远不会成为巨头,但是巨头需要他们。如果把互联网比作出售的商品的话,那么移动互联网就是专卖店的门面,恰当的选址,可能会带来质的飞跃。

我们谈到传统互联网,其实传统互联网在做什么呢,他们其实都是在兜售他们的商品,他们的服务。那么这也是为什么我说云计算平台还有很多的波澜壮阔等着我们去见证。如果说传统互联网是把服务都基于自己的平台搭建的化,那么云计算平台要做的事情就是把这些基本的平台更加通用化。其实这很像作坊劳动逐渐想工业化流水线转换的过程,带来的将会是革命性的变化。当电子产业最终发展的时候,只有大量的零配件,各个产出的东西都会是各种零配件千方百样的组合,直到冯诺依曼对其进一步抽象,革命性的把最终把计算机定义成由输入设备、存储器、运算器、控制器、输出设备,计算机才最终有了稳定的体系,当然IBM之后革命性了定义了PC的基本模型,才最终奠定了计算机实现量产,走进千家万户。其实现在的互联网也需要被这样重新被定义一下,最终会有专业的服务器托管商,数据库托管商,网络托管商,安全托管商等,至于他们可以各自不同的去实现,如同AMD和英特尔,但是只要插在主板上,就可以跑你的服务。这其中要做的事情很多,因为产业革命之中总是那么的荡气回肠的。为什么要这么做呢,其实就像没有冯诺依曼就不会有今天的windows,mac os以及这个平台上丰富的软件生态系统为我们服务,没有云服务,就不会有我们所谓的智能交通,智慧城市,以及物联网之类的概念。现在已经电表可以智能的计电了,于是可以只能的计费了,所以以后的电厂就像,就像移动运行商一样,慢慢的就会是水,是煤气,是更多更多服务性东西。电表,水表,等等都像一台电脑一样运作着,直到一天你会发现家里的电饭煲,热水器,冰箱也能这么用了,甚至消防栓都是可以智能启动的,你可以通过云服务平台,观察家里的一举一动,当然也可以控制他的一举一动,直到更远的一天,你会发现,出门也许汽车也是一台电脑,为你提供出行服务。那么不管多少终端的出现,背后依赖的就是云平台这个浩大的系统。如果说今天我们有了电脑不能没有数据网络平台,有了手机不能没有通讯服务平台一样,那么不远的时间内,我们的生活中享受的服务就不能没有背后的云平台。每每想到以后坐上车子就知道多久能够到站,可以在车上开始淘米煮饭洗衣服,工作上班的时候可以丢一个球给家里的狗狗,然后喂点狗粮这些大量的数据,大量的服务,就暗暗惊叹也许正在经历着一场互联网的革命。

就这样,移动互联网的关键字是移动,云计算平台的关键字是平台,那么谁更波澜壮阔,应该不言自喻了吧。

以上纯拍脑袋之言,当然,我觉得会在很短的时间内成为现实,我的估计,再过一个10年,我们再瞧瞧。哈哈,另外我觉得华为已经具备条件成为这一场浪潮的弄潮儿。

 
本文基于黄浩在珠三角技术沙龙深圳会场2011-12-04的技术分享,版权归于黄浩和珠三角技术沙龙,如需转载,
请联系
珠三角技术沙龙:www.techparty.org
关于该分享的PPT和录音,请参考
概要
电子商务系统的用户界面有比较浓厚的互联网应用色彩,所以很多系统大多采用类似于互联网网站的设计方法和设计理念,在架构设计、技术理念乃至系统运营层面,电子商务系统与企业系统往往是相互独立甚至异构,非常容易形成信息孤岛。从企业级系统的角度,结合一定的互联网技术特点,开发设计电子商务系统,能够有效地避免。本次分享主要就电子商务系统的平台设计、中间件产品的合理运用,充分利用架构设计提升电子商务系统的高可用性及扩展集成柔性等方面,提供全新的设计思路。
个人简介
黄浩,资深Java专家及企业级应用系统架构师,中山大学MPM,ITEye资深会员,原OOCL珠海ISD资深JEE专家,现就职于深圳金蝶中间件,担任实施服务部总体架构师,核心技术团队成员。在中间件的企业级应用、企业级系统架构设计、中间件与业务基础件、基础框架的设计开发上有比较丰富的经验。负责设计的北方国际电子交易平台项目被中国SOA标准组织评为2010年十大SOA优秀成功解决方案。现主要负责企业电子商务化、企业系统集成与整合平台化的解决方案、技术咨询与总体架构设计工作。
演讲内容
  • 企业电子商务系统和互联网电子商务系统的异同
  • 基于中间件(金蝶,oracle,apache,jboss)构建一个电子商务系统
  • 中间件技术的应用实践
  • 其他中间件,关于云计算,带来另外一个角度的云计算的思考
电子商务简介
互联网型的电子商务包括以下特点
  1. 基于长尾理论,针对个体消费者。
  2. 在线协作平台,互联网公司不需要考虑其自身供应链的关系,其自身提供平台给供应商和消费者使用。
  3. 关注用户体验,针对个体消费。
 
企业化电子商务(苏宁易购,南航电子商务系统,dell电子商务等公司的电子商务)特点
  1. 其本身是企业信息化的一个部分,基于企业自身的信息化系统
  2. 供应链集成,需要考虑到自身的上下游,包括供应商,分销商,物流商
  3. 其业务流程的价值,不仅仅关注一次销售,而且更关注整个业务流程如何缩短和优化
电子商务系统构成
  • 会员系统
  • 客服系统
  • 监控系统
  • 应用相关接口
  • 辅助子系统(大数据分析,数据挖掘子系统)
传统企业在实施电子商务所面临的主要有四个问题
  1. 缺乏向互联网运作的成熟的技术团队(成熟的团队一般都在大型互联网公司)
  2. 大家比较显而易见的电子商务网站的UI,而并不清晰其真正实现的基础架构
  3. 难以解决企业系统的协同交互
  4. 缺乏成熟可复用的技术方案
电子商务系统的一些技术特点
应用场景层面
  1. 电子商务系统相对传统网站,有着显著的对数据实时比较高的要求,同时要求一部分的一致性
  2. 受制于企业系统的约束,比如支付方面受制于事务方面的影响,保证其可靠性。
  3. 可能有海量的非事务性访问,电子商务网站有大量的人去访问搜索,需要大量的查询和展现,有一定规模的事务性访问,
  4. 具有一些互联网系统的特点,
  5. 其本身具有一些企业系统的特点
技术架构层面
  1. 电子商务很关注数据的mashup(揉合),比如去哪儿网,把很多信息的整合
  2. 关系型数据库的性能,(水平分割,垂直分割,NoSql和传统关系型数据库的结合),
  3. 同时可能有不同的架构思路(偏企业系统方向,偏互联网方向)
  4. 分布式部署
  5. 事务缓存机制,事务迁移,事务恢复,事务的批量处理,去面对大负载的压力
  6. 严格的安全机制,使用HTTPS,或者数字证书(在线支付)
基于中间件构建电子商务系统
传统电子商务技术
页面展示方面
  1. LAMP方案
  2. 模板技术,velocity
  3. 动态内容静态化,将内容生成静态HTML页面,yahoo的23个web优化建议
系统集成方面
  1. 大多使用Rest风格纯http交互
    • WebService(amazon,ebay)
    • Json,XML(weibo,淘宝,阿里巴巴)
    • 采用Base64,base128码传递二进制数据进行交
    • 特殊报文传输(google的ProtocolBuffer)
  2. 简单地基于web的集成
    • 与支付系统(包括银行,第三方支付系统,通过页面跳转,与银行系统交互,并接受回调来实现)
持久化存储方向
  1. 结合关系型数据库,并利用NoSQL进行优化
    • Mysql集群+NOsql缓存
    • 对持久化数据进行垂直或者横向切分
  2. 非结构化的信息存储
    • 比如订单、挂单,等直接以文件的方式存储,文件添加索引来实现查询,
  3. 使用简单事务,甚至原始事务,放弃复杂事务。
  4. 基本放弃orm,比如使用ibatis
  5. 基本放弃了基于数据库的内容检索
    • 使用基于索引文件的内容搜索
    • – 比如使用hibernate-lucene对实体生成索引文件
    • – 比如定时对数据库内容进行基于Lucene的索引生成
主要的问题
  1. 缺乏独立的软件机器技术方案提供
    • 几乎所有的方案来自于电子商务企业内部(当当,京东,淘宝,都有独自的技术解决方案)
    • 技术方案缺乏共性,差异性比较大
  2. 几乎都偏向于互联网应用层面
    • 大多数关注web, 更加关注web层面,忽视了基础架构层
    • 与企业系统隔离,在架构、技术以及业务各个层面缺乏与企业系统的互通在架构、技术以及业务各个层面缺乏与企业系统的互通
基于中间件技术构建电子商务系统

优势
  • 从系统架构的角度看待电子商务系统的建设,而非传统的人机交互层面。给技术人员一个全新的思考
  • 在处理系统集成层面有先天的优势,而企业系统与电子商务系统的无缝整合是企业化电子商务系统最为关键的一环
不善于
  • 无法构建电子商务网站,尤其是人机交互的用户体验,页面展现等,需要大量结合运用互联网技术。
  • 在电子商务的业务领域,比如依赖分析、行为意向分析、定向推荐,所数据挖掘等,中间本身无法实现,需要技术人员设计实现
全新的视角
  • 在企业电子商务系统建设思路上考虑一个新的方式,结合传统企业应用技术和互联网应用技术设计实现电子商务系统
  • 关注与企业系统之间的协同与交互,利用中间件产品实现与企业系统之间的数据、应用及流程的集成,避免电子商务成为企业整个信息化中分割的一部分。比如与企业订单系统、进销存系统、物流系统的对接
  • 在架构及技术实现层面提供可复用的解决方案,利用较为成熟的中间件技术产品,解决电子商务系统中的某些问题,实现基础架构的快速搭建。其主要面向中小型电子商务,并不是使用阿里腾讯所要求的大量定制的电子商务

中间件技术的技术堆栈

软件架构框架层
1 网络层
2 操作系统/硬件服务器层/硬储存设备
4 基础架构技术层
  • 应用服务器
  • MQ(消息队列)
  • 云计算平台
  • 分布式计算框架(EJB,Hadoop)
  • 内存数据库(Oracle‘s TimesTen)
  • 缓存(Memcache)
4 应用架构层

  • 数据ETL(Extract-Transform-load),即数据抽取、转换、装载
  • 企业服务总线ESB
  • 安全认证
  • 单点登录(SSO)
5 业务架构层
  • 业务流程 BPM/BPEL
  • Web服务
  • 数据建模、业务建模
  • 数据挖掘和商业智能(DM&BI)
6 表现层
  • 基于portlet的门户技术
  • 内容管理 CMS
  • web开发框架
监控与治理
  1. 系统监控管理工具
  2. 服务治理工具
基于中间件的企业电子商务系统架构
 
基于中间件的电子商务系统物理部署架构
1.DMZ的网络隔离
包含两个缓存中间件,针对web的缓存中间件和针对应用的缓存中间件
2.消息中间件,集成中间件来与外部系统通过互联网实现集成应用
中间件技术的实践
案例:
卖家家上网挂单,录入挂单后,提交给服务器,服务器保存挂单到数据库,生成静态的HTML缓存,生成索引来方便查询。
问题:
当有批量的用户来向服务器来提交订单,可能造成服务器宕机
 
方案:
使用MQ消息中间件,通过异步来实现负载均衡,通过JMS和MQ把消息分发到不同的web服务器,来实现业务的负载均衡
技术运用:
 通过多个Consumer机制,实现消息的负载处理

• 其原理类似于生产-消费线程(并不是所有MQ都支持)
• 可以有效应对瞬间大批量订单,降低DoS攻击的影响。
• 通过负载均衡,可以确保重点客户的订单处理
– 设计多个处理队列,将重点客户的订单发送至特定的队列,从而确保处理的高效和优先级。
– 实现服务质量等级差
 基于队列的消息处理
• 可以采用单队列-多消费者模式,也可以采用多队列-多消费者模式
– 避免单个队列有过多的消费者,否则消息分发本身将耗费太多资源
• 可以根据订单类型、地域来设置消费者和消息队列
• 通过消息的优先级设置优化处理
– 通过MQ的优先级机制,以及Consumer顺序实现部分订单优先处理

相关建议

 避免业务操作所产生消息的先后约束性
• 具有先后顺序约束关系的操作可以利用有序消息
– 不是所有MQ都支持,并且会弱化MQ的负载均衡作用

业务场景

 使用MQ,将实时存储和处理订单改为异步处理
• 应用前提是订单的存储和处理能力远小于HTTP请求。
 秒杀、竞价、限时抢购等一系列瞬时大量业务操作
• 避免瞬时过大的并发访问导致网站崩溃

方案:
使用MQ消息中间件,实现串行化并发操作
技术运用:
 同负载均衡相反,主要是通过MQ消除并发冲突
 为处理队列只设置一个消费者
• 相当于分布式系统环境下的单实例模式
• 只设置一个队列、一个消费

相关建议

 仅当处理操作不支持并发操作时才考虑
 考虑增加消息过滤及消息合并,避免重复操作消

业务场景

 更新基于Lucene的索引文件
• Lucene更新文件索引需要对文件生成写锁
– 将索引同步生成改为发送消息给MQ,然后统一先后处理索引生成,避免出现同步锁而索引更新失败的情况。
 动态更新配置文件信息时
• 更新配置文件产生的写锁冲突
• 生成动态词库时产生的写锁冲突

方案:
使用MQ消息中间件,实现延迟并缓冲的操作 (实现系统buffer)
技术运用:
 利用MQ的消息存储空间实现操作及访问的缓冲
• 一般来说,MQ的消息存储空间可以达到100,000+*
• 一般来说,MQ的吞吐量可以达到10,000+消息/秒*
• *:网络带宽和消息本身大小及消息持久化与否会决定具体量值
 实现跨系统应用间的分布式缓冲结构
• 平衡各个应用子系统的负载压力
• 化波峰为波谷,平衡不同时间段的负载压力
• 合理设置MQ的相关配置
– 牺牲可靠性,提高吞吐能力(>1,000,000+条消息/秒)
– 结合中央式缓存,提高缓冲空
 不立即处理提交的请求,通过MQ缓冲
• 当消息积累到一定数量或者延时,进行消费
– 消费者采用主动消费和基于监听器(MessageListener)的方式相结合
• 消费者消费时取出所有消息,对消息进行合并处理
– 将重复的消息进行过滤
– 在业务层面进行定制,对无效的操作(比如执行、取消)进行丢

业务场景

 用户修改信息导致需要频繁地通知或发布事件
• 会员修改门店,重新反复生成门店静态网页内容
– 当然可以使用延迟动态装载+缓存的方式避免这个问题
• 应用场景
 操作上下文创建的代销占操作较大比重时
• 频繁地写IO,写入数据库,初始化、关闭资源的代销较大
– 通过Buffer实现批量的写入
• 主要是跨应用节点的行为,比如发邮件、发短信、协同处理等
 需要延迟进行的操作
• 当在管理控制平台修改相关规则后,需要延迟定时更新
– 将规则修改后数据同步消息放在Buffer队列中,通过定时消费者进行处理
 跨系统事件通知机制
• 事件及时并发处理能力远小于事件分发能力与事件数量

方案:
数据ETL-跨系统间的数据同步
技术运用:
 利用数据库的改动实现数据间的增量变更Delta Change
• 利用数据库自带的闪回机制
– Oracle的flashback, SQL Server的snapshot机制
• 设计中间存储表
– 针对不支持闪回的数据库,进行定期的更新
• 将数据库变动转为DML脚本
 通过前置机的API方式,传递系统数据
• 如通过Spring的事件机制或ORM插件,将数据变动通过API调用传入前置机,再转换成统一格式。
 数据格式与数据通信协议
• 跨网络间通信可以考虑使用MQ
• 数据格式可以考虑SDO,或其他文本格式(如JSON、XML)、二进制数据格式(如Protobuf

相关建议

 不应使用基于触发器的方式
 尽量不要对业务操作数据进行同步,会带来严重性能影响
 大规模数据同步,考虑使用数据库工具
• Microsoft DTS/Oracle Stream 复制/MySQL Replication

业务场景

 实现库存数据的实时同步
• 当传统渠道销售商品后,通过ETL更新电子商务挂单数量
• 避免电子商务系统与其他系统之间出现的数据不一致情况
 实现商品目录等基础数据的同步
• 确保电子商务系统中的编码、名称能与企业系统一致
• 可以考虑使用MDM实现,但实质上,ETL是MDM的重要组成部分

 
方案:
ESB 服务总线 -实现分布式应用集成
技术原理
接入适配/数据、协议转换/事件通知/服务管理
同步/异步:Web Service/ JMS
技术运用
 通过ESB提供的服务接入屏蔽各个系统间的分布式差异
• 应用程序通过ESB获取其他应用功能的信息并调用
 通过ESB提供的服务封装屏蔽系统间的技术架构差异
• ESB服务封装方式因产品而异
– 基于SCA的服务封装和基于SDO的数据封装
– 基于RMI(Java对象序列化)的数据访问
– 基于WebService的服务的封装
– 基于MQ消息的封装
• 定制化实现与其他开源分布式协议的兼容
– 比如:Hessian、Protobuf 分布式通信的对象序列化及接口封装支持
• 相比起传统基于RMI分布式调用,可以实现多种调用方式
– 同步调用、异步单向调用、异步双向调用等
– 能够更为有效地接入企业不同的应用系统
相关建议
 在ESB基础上定制实现分布式调用框架
• 屏蔽对ESB本身的调用,避免业务逻辑与ESB间的耦合
• 屏蔽中间信息(服务、数据)格式,生成POJO对象和基本API接口
 定制开发应用开发框架
• 扩展Spring,在传统开发框架上支持分布式调用框架
• 避免系统内应用服务调用通过ESB中转,对性能有严重影响
业务应用场景
 跨应用系统流程接入
• 比如: 电子商务下单->预留库存->生成财务应收账单
 实现B2B银行支付
• 新的支付模式,如预付冻结、支付解冻等操作
技术运用
 利用SOA架构思想,将整个电子商务系统服务体系化
• 对系统内部,梳理子系统、模块间的关系,解耦应用
• 对系统外部,定义服务接口,实现服务的接入和输出
 服务接口的规范与协议
• 采用自描述的服务描述
– 使用标准化Web服务,通过XML Schema来描述服务数据标准
• 在现有Pojo的基础上,增加其他方式的适配
– Hessian,Json, 以及REST风格XML
• 结合MQ,实现异步服务处理机制,提高服务能力
 通过ESB管理并监控服务
• 服务的注册、获取、版本管理等
• 了解服务的质量、服务的响应时间、出错率等等
• 实现服务的流量控制
相关建议
 关注内部分布式通信与外部服务接入异同
• 合理考虑使用分布式通信协议
– 包括WebService, Hessian
• 服务元数据的自解释
• 多客户端支持
– Web客户端语言
– 企业应用语言
• 性能
– 基于HTTP的文本型服务输出应考虑支持Gzip压缩
• 上下文安全性
– WS-Security
– Token技术:比如淘宝平台使用的SessionKey(<255位)
 定制开发服务监控及治理平台
业务应用场景
 内部子系统SOA架构的梳理

• 将部分业务功能服务化,比如结算支付、基础框架功能、合同处理等
 实现非Web化的系统访问
• 支持非Web化的电子商务订单
– 方便会员企业系统的对接,提供EDI/EbXML多种订单处理方式
• 移动客户端的接入
– 确保系统的处理逻辑与web操作间实现松耦合。
 构建服务平台
• 将电子商务系统的服务发布给客户或第三方,实现平台的增值
– 实现业务逻辑层面的重用,支持移动客户端访问
• 对重要的接口和环节进行定义,实现第三方服务接入
– 可以对接入、输出的服务响应时间、服务质量进行监控和统计分析

方案
业务流程–定制灵活的交易流程
技术运用
 通过工作流机制,将业务逻辑节点解耦
• 将电子商务的交易过程分解成多个步骤,从而灵活交易模式
• 将业务模块进行水平解耦,将系统分解成多个子系统,并通过工作流机制实现子系统间的相互业务衔接
 利用流程定义工具来定制交易流程
• 基于WFMC的工作流,适合单个系统内部流程
• BPEL/BPMN,适合跨系统间组织的业务流程
相关建议
 对于只涉及单个系统内部的流程最好不使用BPEL/BPMN
 对于简单或者几乎标准化的交易过程,可以考虑固化封装流程
业务应用场景
 针对企业电子商务(B2B)的交易流程
• 交易流程会在普通消费型电子交易流程上增加不同的环节和节点
– 合同处理:增加合同创建、变更、签章、法律认证等环节
– 支付方式:增加预付定金、分期付款、收验发票等环节
– 企业管控:增加订单审核、财务审批等多个操作环节。
 在传统交易方式上变更的多种交易模式
• 竞价购买、竞拍购买
 需要灵活定制的结算和订单处理规则
• 促销及优惠规则:包括折扣、返券、优惠等多种形式
• 下单规则:团购、秒杀、同行提货等
 
方案
分布式缓存-构建中央数据缓存
技术运用
 将各个节点的缓存独立出来,使用专用缓存构建中心星状的分布式缓存应用
• 避免整个网络拓扑中节点间相互通信造成的网络堵塞
– 当web应用节点增多,服务器间通信将大大占据网络带宽
• 实现应用节点的柔性横向扩展
• 缓存节点本身可以进行负载均衡
 合理设置缓存服务器之间通信
• Web缓存与应用缓存间的数据同步
• 缓存的失效机制及刷新处理
相关建议
 为避免缓存宕机引发的数据灾难,缓存需要实现热备份
• 对于关键性的缓存数据,需要考虑持久化备份
 尽量避免有状态信息数据的缓存
• 有状态信息数据一般无法被及时flush掉
• 极大规模应用时,异常情况下有状态数据的恢复容易造成灾难
 当web应用节点过多时,考虑进行分隔处理
• 建立多个星状的缓存通信网络,彼此间相对独立
• Web缓存与应用缓存间的同步处理
– 比如Session中央缓存与后期数据数据缓存间的关系处理
应用场景
 将Http Session存储在中央缓存上
• 避免应用节点之间的Session的复制和同步
• 减少每个应用节点的资源占用,并实现session的快速恢复
• 依赖于应用服务器的机制,有的服务器在本地依旧会保存当前节点创建的所有Session,而有的服务器只缓存一定数量的Session
 将Web组件的ViewState存储在中央缓存上
• 减少web应用节点对于ViewState的存储
• 存储的Key包括ViewState的id和JsessionId
 将数据持久访问层的对象查询放在中央缓存上
• 将中央缓存作为ORM的二级缓存
 将MQ服务端的消息临时存储在缓存上
• 当瞬间非持久化消息量过大,存储在缓存上避免拒绝服务
• 帮助实现MQ负载均衡节点间的数据切换
技术运用
 将同步性的数据库事务变为异步性的事务操作
• 降低事务锁冲突带来的访问瓶颈
• 减少并发的事务量,降低数据库的瓶颈
• 利用波峰波谷原理,将部分事务延迟到系统闲时提交
 利用内存数据库存储事务操作的上下文
• 利用ORM的原理,存储原始对象、修改对象及执行顺序
– 便于提交、回滚事务
– 提交时包括prepare和commit两个操作
 存储临时性的事务状态
• 避免频繁地事务补偿带来的代销
 事务缓存与消息延迟处理的区别
• 前者的执行有依赖性,并直接写入持久性存储
• 前者是一系列操作,并需要保证原子
相关建议
 内存数据库节点的崩溃会导致事务数据丢失
• 需要平衡事务缓存与事务日志
 事务缓存后操作成功与失败对电子商务系统的反馈机制
• 事务缓存后写入持久性存储的操作可能会出现失败
– 处理逻辑可以视为失败消息的延迟获取,而非事务的延迟提交
• 事务失败续写:利用事务日志,再次写入持久性存储
• 事务补偿机制(两个银行转账,必须保持一致)
 需要考虑事务缓存的数据与数据库数据一致性问题
• 事务缓存不能代替传统事务处理,只能作为性能优化的考虑
• 对于一致性要求严谨的数据操作,建议不要考虑事务缓
业务应用场景
 事务缓存与异步处理逻辑的区别
• 对于业务来说,事务提交是完成的,只是物理上没有写入持久性存储。
 不需要同步得到反馈的事务应用
• 某些信息修改,会员资料认证、会员信息等。
• 订单修改
 临时性的事务中间状态
• 比如限时结算支付的订单
• 比如已经提交其他系统处理等待反馈的数据(如提交支付的订单,提交审批的合同)
WEB开发框架-基于组件的web开发
技术运用
 借助基于组件的开发框架实现组件重用
• 包括服务端和客户端可重用Widget
– 服务端:JSF1.2+组件开发技术、Taperstry、Wicket
– 客户端:基于Jquery定制
 实现IDE的开发集成技术实现
• 应用开发框架的集成
 封装互联网技术支持
• 提供Ajax支持
– 包括局部刷新、局部提交,甚至Ajax Push机制
• 封装动态内容静态化及模板技术
– 封装缓存的调用
• 基于Yahoo的关于35个web优化实践的页面内容优化
• 跨浏览器支持
– 移动客户端浏览器支持(基于WML)
 
云计算PaaS平台应用前景探讨
IaaS(云计算基础设施)
硬件虚拟化:X86服务器,小型机,大型机
PaaS(平计算平台)
操作系统虚拟化:(Vmware)
服务平台化(应用服务器虚拟化):google app Engine
服务组件化(中间件服务虚拟化):集成中间件,流程中间件,数据中间件,消息中间件,交互中间件,监控中间件
SaaS(云计算应用)
应用服务化:apple , 360 , tecent 提供的云服务
PaaS带来
柔性的横向扩展能力
 简化目前的负载均衡模型,并能提供柔性的横向扩展能力。
 合理并适度地利用硬件资源
 降低服务器之间的部署及管理成本
简化的分布式应用编程
 减低基于中间件的应用编程难度
 提供新的分布式计算模型,降低分布式应用的编程难
整合的上层应用支持
 根据标准化协议,整合各类中间件之间的通信
 为上层应用提供基础平台架构,中间件产品的应用不会带来底层架构层次的大的变动
JEE 7 Platform
• 云计算下编程模型
– JNDI将在云环境全局化或虚拟全局化,支持动态跨JVM资源注入与获取
– JPA/JDBC/JMS云计算环境下的编程模型
• 新的云环境部署规范
– WAR/EJB/WS的云环境部署
– 部署描述符的改进
• 新的负载均衡模型
– WAR中的Session处理
VMWare收购SpringSource带来的思考
• 基于Spring的新分布式计算模型与框架
– 动态注入新虚拟化JVM的Bean实例
– Bean实例级别的负载均衡
 

哈哈,毕业以来,第一次找工作被拒.心里有一点不爽。反思一下,吐槽一把。

首先得感谢下,@春的梅–ThoughtWorks 从在weibo上关注,到之后的一些接触过程中,一直延续的热心.很棒的HR,给求职者带来的印象非常棒.

昨天的电话面试情况不太好。你确实有聪明的一面,也很喜欢参加技术社区活动,这都是我们喜欢的。不过,在应用了java2年多以后,我们发现你对java的掌握还很不够,也没有发现其他的你掌握得比较好或者很好的技术点。当然,有可能是问题没有覆盖到你的强项。我们建议你踏实下来真正的把一两个技术点学的扎实些,然后如果有兴趣,还可以再次申请我们的职位。谢谢!

这个是在weibo上收到的答复,有点心理准备,但非常意料之外.这样我的thoughtworks探险,还没有挑战现场面试就挂掉了。

之前tw的homework还是比较有意思,三道题,我都想了想,基本考查的就是代码规范以及OO的思维。
然后就是电话面试了,不知道对方是几个人,面了之后,以为会因为敏捷方面的经验缺乏而被诟病,没有想到居然在技术上的不足被拎了出来.哈哈,一向都比较自以为是的java基本功,最后成为最终的滑铁卢.

首先就事论事,昨天的技术面,电话会议,不知何人,不闻面色,确实有些难以把握。
问了几个比较宽泛的问题。
1、面向对象的特征
2、接口和抽象类的区别
3、项目中比较有技术难点的东西 (我的回答说其实比较简单,但貌似实际上也并不简单)
4、java 7 中新的特性(其实真的忘记了,只回答了VM收购sping之后,java开始像云,也就是分布式发展的趋势,其实我依旧觉得这些趋势要甚于语法上switch,try catch,泛型类型判断 所带来的意义)
期间回答的时候,不乏吐槽。吐槽java语法不够灵活的特点。当然这依旧改变不了,java平台的成熟,解决方案的百花齐放,基本上任何解决方案,java你都能找到响应的开源方案。现在回想起来,回答的问题很宽泛,我的回答更宽泛,这样就判断技术点不给力,真有一点不大爽。。

说说自己对职业生涯的规划,觉得五年跳三次是比较理想的进步环境,所以今年或者明年是我决定走出去,放弃如今比较安逸的环境。所以今年只丢出去了一份简历,给tw。

对tw的了解,来自于一堆书籍,agile tour,来自之后gigix在iteye上的论战,以及coolshell中那帮八卦故事。这个争议中的公司,吸引我的地方,就是他的争议。

我喜欢tw的一点,是他们的团队,定期的delivery一些blog,有人觉得tw的blog内容比较浮躁,不够积淀。但是这个过程,对于博主,不得不说是沉淀的过程。

说说自己过去的一年把。在下半年申请了自己的域名和空间,热心了一阵wordpress之后,热情大减。
可能是读了太多牛逼blog的缘故,不愿意过多的制造互联网垃圾,我更愿意把只要网上有解决方案的东西,evernote话。成为自己的private资料库,而不愿意,复制粘贴成一篇blog。
所以别人在我的blog上,大概猜不出我是做java的。
不过也由于自己的原因,是特别想delivery出来的,但是没有post的东西,
1、和余华前辈讨论的 搜索商店
2、黄浩前辈的《基于中间件的电子商务》的技术演讲
3、欠沙龙每月一篇宣传blog

oh,shit,执行力不足。我最大的软肋。
TW,很遗憾错过你了。不过,我依旧相信,这是个好事情。哈哈,感谢这次成长。
提升,自己的执行力。

 

Evernote

Evernote,是我在大学的时候就开始使用的东西,应该算是国内的比较早期小众用户.估计直到现在,知道这块软件的用户依然不多.Evernote,到底是神马?我的体验是,伟大,有无穷无尽的惊喜,不仅仅是一个工具,而是像平台一样激发你的创造。
Inc.Magazine年度公司Evernote:命悬一线的惊险,如果你想知道为什么硅谷和东京这么流行这玩意,这篇文章值得一读.

它是一个你卸载到服务器上的大脑。它是你的生活的Google引擎。它是你的个人小宇宙茫茫无边黑暗中的一点火花。它是一个工具,能将你的智能手机从一个时间杀手转换为帮助你节约时间的工具。

你可以为记事加上名字或者标签,但这都不是必须的。你也可以将记事归档——任何Evernote中的信息都会是来自于不同记事本的记事——并且将这些记事本或者个人记事与其他人分享。为了在之后找到你的记事,你只需要回忆起关于它的一个关键点就可以了。想要想起去过的酒店?搜一下法国吐司,因为这是你在那家酒店吃过的,并且你还给菜单照了一张照片。或者搜西雅图,因为那时候你就在那儿。或者搜Janet,因为她那时和你在一起,你还给她照了一张相。或者搜黑洞,因为你记得那天你点到了一篇关于黑洞的文章,一旦你知道日期了,你就可以找到那天的其他记事了。“这是将事情放在你手边的电子版应用。”Libin说。

附上几个Evernote的插件,
Evernote Clearly, Chrome下的一个插件,可以让广告连篇的文章,看起来非常简洁。并且方便你的收集。(最近从Firefox转到chrome,因为忽然发现油猴在chrome居然原生支持。。。)

Evernote Web clipper,剪切板。并且能和搜索引擎一起找你的搜集的东西。

Evernote Hello,一个让你记住新朋友的玩意

推荐指数: ❤❤❤❤❤

Google Reader + Kindle

kindle 3是我在2011年买的最超值的电子产品。几乎解决了这一年所有公交车的时间。 说到这,不得不感觉豆瓣(including some greaseMonkey script),感谢iask,当然还得感谢一个很非主流的网站ppurl。谢谢你们提供的书籍.
当然最大的资源莫过于Google reader,当然最好的是没有改版的Google Reader,因为buzz带来的分享功能,一直让我阅读到最精粹的文章.
RSS,一种在国内QQ弹窗盛行下,不甚风行的手段,不得不说是高效率至极的东西…..
由此还推荐两个应用,read it later , Instapaper .其实就是当你看到一篇不错的文章,当偏偏你正在工作不能分心,或者心情很差不想看的时候,存起来.read it later.
改版的Google Reader读起来并不如以前高效,屏幕和键盘快捷键使用相当不爽,不过如果可以,用iphone版的reader代替,会是个不错的方案.
总之,能静下心来读书,在这个浮躁的社会,很难能可贵.感谢Amazon 感谢Google

推荐指数: ❤❤❤❤ (其实应该是五个,不过鄙视下google所谓小清新的升级,实际丢了reader精神,再者说明Evernote多么的伟大)

SugarSync
SugarSync和Evernote一样属于云时代的东西,也和evenote一样绿色的简洁图标。功能很简单,让你公司,家里的电脑,手机,平板都同步资料。很喜欢什么都同步的感觉,另外花了100CNY换取100GB空间的行为,至今仍然觉得很超值。

推荐指数: ❤❤❤❤

Mindjet
Mindjet,一个思维导图的工具,其实我用的不算熟,不过作为生产力软件的代表,还是觉得推荐去尝试一下,如果有空,再找一本思维导图的相关书籍读一读,相信收获更多

推荐指数: ❤❤❤

另外,本年用了blackberry,其实是个很有生产力的工具,用这玩意尝试了pocketInformation,doit.im , todo.ly等等GTD工具,还小玩了下番茄时间这个玩意。
跟软件相关的,还尝试了github,这个很有意思的代码社交,当然遇到stackoverfolw真的是非常荣幸的事情,另外伟大的工具vim让我在csdn密码泄露时候表示很淡定。当然,小小接触了excel,一个重量级的生产力工具。
当然,如果你还跟我一样,依然只用win平台,那么everthing是个不错的搜索工具,thx,zongwei007分享给我的这个美妙的东西。

总之不得不感叹,随着智能手机崛起,以及各种浏览器平台,qq平台等等OOXX平台所带来的app时代。美妙的工具很多,能坚持的人很少。
娃哈哈,分享一下。

 

Vim

原文 http://coolshell.cn/articles/5426.html

vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。

——————————正文开始——————————

你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。

Vim the Six Billion Dollar editor

Better, Stronger, Faster.

学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。 Continue reading »

 

After Hello World, I’d like to post a nice beauty to everybody..

Now ,Here is my private domain. my private space .Woo Hoo

As we know, ‘Hello World’ is easiest, and how to dig into a nutsh.

This is the Question.

I don’t know how long I will hold fast to here.

Long, I hope so.

Hope that you and me can get a little from here..

Thanks WP

© 2012 In a Nutsh Suffusion theme by Sayontan Sinha