文档章节

电子商务系统的设计与实现(六):账务系统服务化的好处和坏处

FansUnion
 FansUnion
发布于 2015/10/22 10:30
字数 1003
阅读 23
收藏 0
点赞 0
评论 0
   账务系统服务化,参考了公司Boss的设计。不过,随着思考的深入,发现账务系统服务化也有不少坏处,对一个中小型公司,小技术团队,中小型网站来说。

   坏处
1.开发成本增大。
  服务化,需要新建一个项目。开发调试的时候,必须保证账务系统一直在运行,因此,部署的时候,账务系统也需要单独部署一次。
2.跨系统事务处理起来比较麻烦。
  目前,投标的时候,立即需要支付,即把投标和支付2个跨系统的服务,想作为一个事务。但是,目前又没有分布式事务的基础框架。
因此,折衷的办法是,把账务这种不可回滚的操作,放在最后一个执行,如果失败,就让tender投标回滚。

 但是,我发现投标和支付可以不作为一个事务。我们在电商网站购物的时候,一般都是先购物,生成订单,然后再支付,即从业务上就把某个业务和账务操作分离了,不需要在一个事务中执行。

因此,如果我们非常把账务服务化,对于咱们目前比较简单的业务场景,可以不需要跨系统的事务,在业务层面,把投标和支付分开就好了。

 但是,如果我们非要实现跨系统事务呢。当然是可以实现的。

 据说,支付宝之类的大型互联网公司,有自己的事务框架,单独的事务服务器。一个事务,往往有一个发起方和多个参与方,参与方成功或失败,都会发送“回执通知”请求。根据这些请求,最后保障事务。另外呢,事务也可能不是实时去处理的,可能会把一些要做的事情,缓冲到数据库中。然后再,定时处理这些事情,可能会需要事务。

在实际的购物网站中,跨系统事务是肯定存在的。比如,买家支付完成后,购物平台一方面要通知买家成功支付信息,另一个方面,要通知卖家可以发货了。

好处
1.方便调用接口和协作。
   多个系统之间,通过接口,可以很好地协作。
2.方便多个团队同时开发。
  比如,购物网站,账务系统和主体商城商品可以由2个团队完成。两者的开发,互相不影响。只要把接口定义好,保证接口最后的实现是符合规定的就可以了。

本系统的实际情况
我目前正在做的这个购物系统,规模比较小,开发人员也很少,把账务单独做出一个服务化的系统,感觉太麻烦了。另外,如果需要把账务和一些业务放在一个事务中,事务的实现也更简单。

有一个业务是可以确定的,购物生成订单和支付相分离,是目前比较主流的做法。

感悟
之前都是在中小型公司工作,Web系统的业务相对比较简单,不太清楚淘宝等大公司的技术做法。对于很多业务场景,根本没有考虑过技术实现。还好,这次遇到了之前在支付宝等大公司工作过的boss,从他那里了解到了,很多业务需求和技术思想。至于技术的实现,对于咱们一直搞技术的人来说,不是太难,至少,开源的技术实现已经很多了。
 CSDN2014博客之星评选,帮小雷投一票吧

http://vote.blog.csdn.net/blogstar2014/details?username=fansunion

版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

共有 人打赏支持
FansUnion
粉丝 56
博文 857
码字总数 825464
作品 0
丰台
高级程序员
对于账务系统开发的一点儿理解

做支付系统建设也有一段时间了,受累于各种事务性工作,一直没有沉下心好好研究和理解下其中较为核心的部分,账务便是一个。对于开发账务系统的人来说,系统的阅读和学习一些会计知识是必须的...

orpheus ⋅ 2016/03/07 ⋅ 0

bluepenguin设计方案

一. 项目目的 组合常用开发框架,摈弃这些框架中重量级的功能,简化框架配置。形成一套能够高效开发出优质系统的组合框架。 二.项目组件 JDK1.6, 开源框架: EXT3.0 SPRING2.5 Log4j 自定义...

赵宇豪 ⋅ 2009/10/21 ⋅ 0

全虚拟化和半虚拟化的区别

安装方式: 半虚拟化,支持通过 http ftp nfs 方式进行安装。 全虚拟化,支持通过 iso文件 光驱 网络pxe 安装。 利用方式: 半虚拟化可以直接利用硬件。 是和系统一样虚拟一个或几个系统 完全...

shenlongfuhuo ⋅ 2014/05/03 ⋅ 0

系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]

一、上章回顾 在上篇中我们讲解了几类UML2.0语言新推出的建模图形,总体来说通过这些图形能更详细的将某类信息表达出来。在这里我们简单回顾上篇讲解的内容。 上图中已经简单介绍了上章讲述的...

wbf961127 ⋅ 2017/11/12 ⋅ 0

分布式事务主流解决方案优缺点大pk

XA 协议在架构上与 TCC 模型相比,最大的不同是 XA 直接作用于资源层,而后者作用于服务层。 资源层更普适,并且对业务几乎没有侵入,但为了适应各种业务场景使用,需要严格遵循事务 ACID 特...

DBAplus社群 ⋅ 02/07 ⋅ 0

启航A8ERP系统管理软件

启航A8 ERP系统管理软件是针对中高端市场开发的一款新型ERP软件.他将企业内部管理与互联网技术全面结合.为企业提供集多方位 管理于一体的电子商务平台.以"提高企业的工作效率和经济效益"为目...

qihangsoft1 ⋅ 2017/04/24 ⋅ 0

XEN 半虚拟化&&全虚拟化

半虚拟化,支持通过 http ftp nfs 方式进行安装。 全虚拟化,支持通过 iso文件 光驱 网络pxe 安装。 半虚拟化的意思是需要修改被虚拟系统的内核,以实现系统能被完美的虚拟在Xen上面。完全虚...

China_OS ⋅ 2013/01/26 ⋅ 0

收集IT公司面试题

第一部分: 1. JDK1.5新增的功能 2. 字符流和字节流的区别,使用场景,相关类 3. 线程安全的概念,实现线程安全的几种方法 4. 抽象类和接口的区别,使用场景 5. hash算法的实现原理,hashcod...

小梅菜鸟 ⋅ 2012/02/26 ⋅ 0

支付系统0X00: 支付系统预研

date: 2017-11-19 17:12:16 title: 支付系统0X00: 支付系统预研 最近在写支付系统, 之前公司写了一版, 量级比较小, 纯同步, 应用层就简单的 api + task, 项目结构也简单: lib: 用来存放项目核...

daydaygo ⋅ 2017/11/21 ⋅ 0

用分布式事务中间件来保障金融级交易系统的一致性

背景介绍 本篇是北京云栖大会Tech Insight Workshop金融云主题《使用SOFA来快速构建金融级分布式交易系统》中的一个组成部分. 通过前面的篇章,我们已经借助SOFA Boot框架构建了基于微服务架...

chiehchu ⋅ 2017/12/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

linux 安装docker

通过以下命令下载安装docker wget -qO- https://get.docker.com | sh 执行以上命令后输出以下内容说明安装成功,注意红框中的内容,docker安装成功后默认只有root能使用,红框中给出的提示是...

haoyuehong ⋅ 7分钟前 ⋅ 0

482. License Key Formatting - LeetCode

Question 482. License Key Formatting Solution 思路:字符串转化为char数组,从后遍历,如果是大写字母就转化为小写字母,如果是-就忽略,如果遍历了k个字符(排除-)就追加一个-。 Java实现...

yysue ⋅ 26分钟前 ⋅ 0

聊聊spring cloud gateway的LoadBalancerClientFilter

序 本文主要研究一下spring cloud gateway的LoadBalancerClientFilter GatewayLoadBalancerClientAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springfram......

go4it ⋅ 50分钟前 ⋅ 0

详解:Nginx反代实现Kibana登录认证功能

Kibana 5.5 版后,已不支持认证功能,也就是说,直接打开页面就能管理,想想都不安全,不过官方提供了 X-Pack 认证,但有时间限制。毕竟X-Pack是商业版。 下面我将操作如何使用Nginx反向代理...

问题终结者 ⋅ 57分钟前 ⋅ 0

002、nginx配置虚拟主机

一、nginx配置虚拟主机可分为三种方式,分别为: 1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站...

北岩 ⋅ 今天 ⋅ 0

shell脚本之死循环写法

最近在学习写shell脚本,在练习if while等流程控制时,突然它们的死循环写法是怎么样的?经过百度与亲测记录如下: for死循环 #! /bin/bashfor ((;;));do date sleep 1d...

hensemlee ⋅ 今天 ⋅ 0

苹果的ARKit2.0有多可怕,看了就知道

序言 ARKit主要由三部分组成: 跟踪(Tracking) 跟踪是ARKit的核心组件之一,其提供了设备在物理世界中的位置与方向信息,并对物体进行跟踪,如人脸。 2.场景理解(Scene Understanding) 场...

_小迷糊 ⋅ 今天 ⋅ 0

5.1 vim介绍 5.2 vim移动光标 5.3 ,5.4vim一般模式下移动光标,复制粘贴

vim命令 vim是vi的一个升级版;vim可以显示文字的颜色 安装vim这一个包vim-enhanced 如果不知道安装包,可以使用 命令下面命令来查看vim命令是那个包安装的。 [root@linux-128 ~]# yum prov...

Linux_老吴 ⋅ 今天 ⋅ 0

vim一般模式

vim 是什么 vim是什么 ? 在之前接触Linux,编辑网卡配置文件的时候我们用过了vi ,vim简单说就是vi的升级版,它跟vi一样是Linux系统中的一个文本编辑工具。 如果系统中没有vim ,需要安装一...

李超小牛子 ⋅ 今天 ⋅ 0

docker实战

构建企业级Docker虚拟化平台实战 重点剖析虚拟化和云计算概念; 分析Docker虚拟化的概念和原理; 从0开始实战Docker虚拟化平台; 基于Docker构建Nginx WEB服务器和CentOS虚拟机; 基于开源监...

寰宇01 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部