电子商务网站开发方面的一些讨论

电子商务网站技术框架选型,技术架构方面的讨论和观点,作为刚入行的新人值得学习,相关链接如下:

一、大型java多用户商城系统设计开发的心得和困难,http://www.iteye.com/topic/1119514。

二、也谈大型电子商务网站的架构,http://stamen.iteye.com/blog/1525924。

值得思考的一些内容引用

Jpa跟Hibernate很类似,个人感觉没有hibernate灵活,hibernate在快速开发上是很有优势的,加上cache可以部分弥补性能上的损耗,另外尽量不用他的那个配置做复杂的关联。 //jpa和hibernate对比,作者的观点。
因为java是mvc方式建设的,有java,jsp, html等,java class需要重启服务器才能生效,而且很难像php一样,把所有东西写在一个目录拷贝到服务器上即可使用,目前我还是没有什么好的思路能达到这个效果的,考察了apache tiles/sitemesh/freemarker/velocity等,都没有想到办法。 //为什么要重启服务器,如何部署到线上呢。

下边的答案正确吗。//重启中断服务,http://www.iteye.com/topic/1119514?page=6

在阿里或淘宝,采用的是Half的方式进行服务的启动,前段采用F5进行负载均衡。具体做法是。比如,10台机器,先停掉5台,然后发布新程序,然后启动,F5连接有效后,循环做另外的部分。这种方式一般通过F5脚本进行操作,这样只会让用户觉得慢不会有无法访问的情况。所以,不停服务更新程序,在你没有能力购买F5前,是不能平滑解决的。
下边观点怎么样

Spring JDBC Template遇到分表、分库就好使了?好使在哪里? 很多人提倡Spring JDBC Template,对其崇拜程度就像崇拜Spring一样,Spring是不错,但是不代表Spring出品的所有东西都OK,Spring JDBC Template在我看来就是一个JDBC Template,如同它的名字,如果你可以忍受程序中夹杂一堆SQL语句,那么你认为它是好东西这无可厚非。

也谈大型电子商务网站技术架构:http://stamen.iteye.com/blog/1525924

我的技术选型和onecan的类似,区别在于:

1.缓存:我采用ehcache+memcached结合的方式,ehcache做JVM本地缓存,memcached做进程外全局缓存,即由本地缓存和全局缓存构成系统的二级缓存;

2.数据库上,你用单数据库肯定是不行的。我的平台是划分为100多个库,早期我采用淘宝的amoeba(陈师儒兄写的)分库技术(其实是一个分库中间件,通过一台代理amoeba实现对后端mysql集群的透明化代理。后来发现问题多多,另一个是中间件方案虽然使用简单,但不够灵活,不能做多数据库事务,所以弃之。不得以自己写了一个基于Java的分库框架,即Shard,在应用层直接通过Shard操作数据库集群;

3.全文索引,我们采用Solr,不过目前想把它换成ElasticSearch,因为Solr的全文索引同步比较慢,延时是一个很大的问题,ES做得好些。

4.任务调度你这里没有讲,其实这块对于大型网站是很重要的,我是基于Quautz自己写了一个全局任务调度框架,相当于任务调度云的方式。如每天晚上汇总数据,定期迁移数据等就可以很好地使用任务调度来完成。

5.编码生成:凡是商城或应用系统,肯定是要有一个编码生成的框架,如单据号,商品编号等,要求是全局唯一,规则可自定义。这个我是基于Spring Expression写了一个全局的编码框架。称为codeman,后面我也拟把它开源出来;

6.开放平台:如果你的商城要允许多终端接入,如iphone,android,PC客户端,或者第三方,则一定要有一条服务总线,如淘宝的TOP。这个原来是用Spring MVC直接写的,后来发现新增功能太麻烦,开发效率太低了,因此我就基于Spring MVC框架的设计思路和TOP的应用模型写了一个Rop框架,这个已经开源的,参见我这个帖子: http://www.iteye.com/topic/1121252

7.NoSQL和mySQL结合,mySQL毕竟是关系型的,对于高并发的数据,我们是放到mogonDB中的,这个数据库的压力会小很多。

8.日志的记录:大型网站的日志记录是非常重要的,是审计,问题定位的依据。原来早期,我直接把日志记录到MySQL中,日志很大,数据库压力大,后来把它直接异步到Elastic Search中,不但可以全文检索,并发性大时也没有问题;
此外,对日志编写了一些分析引擎,可以从日志中发现关键的问题,即时报警。

9.会话管理的问题:由于应用服务节点很多,因此弃用Web应用服务器本身的Session功能,直接自己编写了一个全局会话管理功能,以实现全局统一的会话管理。

10.图片服务器独立,每张图片只保存一张物理的,其实不同规格的图片动态生成并放到内存中;

11.项目采用敏捷开发,DDT,Maven等。 

 

你可能感兴趣的:(java购物商城)