`
tower
  • 浏览: 241831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

漫谈计费系统的开发

阅读更多

本文系作者原创,如需转载请注明来源,作者:姜涛,towerjt@gmail.com  tower.iteye.com

 

BOSS 的计费系统的介绍写了两篇,《计费账务系统介绍》和《 OCS 的前世今生》,主要是介绍系统的,下面将针对计费系统中的一些开发技术做一点介绍。其实,其中的一些技术已经有所提到。

再三强调的是,写这篇文章只是一家之言,没有任何褒贬哪种技术的意思。写这几篇文章的初衷只是为了总结和交流。

 

1 、硬件和操作系统:

计费系统因为其系统的特殊性,所以一般都是基于 Unix 的。现在中国移动的计费主机应该是以 IBM Sun 为主,对应的操作系统是 AIX Solaris 。以笔者的经验来看,其实这两种机器在伯仲之间,听很多人人云亦云的说 Sun 的机器慢,我觉得是比较片面的,或许也是 IBM 的销售比较强势吧。

 

2 、数据库:

可笑的是,这个领域似乎已经没什么选择了,厂商基本都扎堆在 Oracle 上,甚至整个 BOSS 系统在基础软件的选择上也没什么选择的余地,基本都是 WTO W 指的是 weblogic websphere T 指的是 Tuxedo O 指的是 Oracle 。计费系统如果用到内存数据库的话,也就是 Altibase TimesTen 两家了。以前可能会有很多厂商会在这块有一些自己的解决方案,但是可以预见的是,随着 TimesTen 的介入,这块自留地会在不远的将来彻底消失。

如果某个省主机用的是 Sun 的话,可能他的所有东西现在都是用 Oracle 公司的了。

厂商用 oracle 的原因首先是 oracle 的分区技术在清单存储和剃重里扮演着十分重要的作用,其次就是 oracle PL/SQL 实在是好用的令人发指。在厂商积累了大量 PL/SQL 的业务代码后,哪怕是 IBM 说免费给你用 db2 也没几个敢用了(这是真事)。

 

3 、开发语言:

在这个领域,应该还是 C C++ 的天下。从目前来看, Java 在这里还是没有使用的场合。原因有很多,这个话题放出去,也被讨论的很多。用 C 语言的原因,站得住脚的说法就是效率,而且 C 语言跟底层打交道比较方便。 Unix 提供了很成熟的 IPC 支持,都是用 C 语言来调用,这是 Java 不具备的。还有一个原因应该是历史的原因吧,这个和大型金融系统是一样的,大量的历史代码都是 C 或者是 C++ 写的,要全改的话,基本也是不可能的。

其实我一直在考虑如何把 Java 语言介入到计费系统里面去,因为 Java 语言的优势在计费系统里面不在于跨平台,而是在于他语言的安全性。以我的经验来看,在日常的计费系统中,除了业务流程错误外,大量的错误是因为数组越界、内存泄漏之类的问题引起的。而这两类的问题, Java 语言有着先天的优势和企业级的监控措施。

但是,把 Java 引入计费系统还有一个很大的障碍,就是 Oracle PL/SQL ,这个语言在计费系统中使用得非常广泛,我见过很多计费厂商的产品,除了框架是用 C 或者是 C++ 写的外,其他的实现基本都是用 PL/SQL 来做。

当然,还有一种语言不得不说,那就是脚本语言。目前这里更多的是实验性质的,我在这方面做了一些尝试,与自己写一个简单的脚本引擎(有不少厂商这样做)相比,我更倾向于使用成熟的脚本语言,在试过 tcl perl python 之后,我认为 lua 可能更合适,也就此写了一篇文章《将 lua 嵌入 C++ 用来做计费系统的批价》。

 

4 、业务 or 技术

相比其他行业的软件,电信行业的软件更加重视的是系统的稳定,以及对业务的支持。不见得先进的概念能在这里发挥多大的用处。因为这里面太复杂了,厂商能做的就是用最简单最成熟的技术来解决问题。毋庸讳言,在这里,开发人员对业务的理解比技术更加重要。笔者曾经和一个互联网界的人士聊天的时候,他就抛出,“你们做计费的除了写点 SQL 还会什么”的言论来,虽然有所偏激,但是很多情况下的确是这样的,很多做计费的开发人员基本就是 PL/SQL 打天下,有些人甚至连简单的文件处理都要导到数据库里面来处理。不过我相信,随着 3G 系统的建设,对计费人员的素质的要求会越来越高,做计费的兄弟们要加油啊。

 

5 、计费系统与设计模式

在设计模式风行的那段时间,我一直在审视我们手头散着臭味的代码,但是冷静下来,我会很自豪的说我也有自己的模式,那就是 KISS ,我不会为了一些可能永远也用不着的“灵活和漂亮”去把我的程序搞得超级复杂,一个父类一个子类的堆出 N 多无用的代码。特别是我看了 libevent Berkeley DB 这些项目的代码后,我更坚定了我的信念。 KISS ,反对为模式而模式!我认为在实际工作中,比较合适的方式应该是用 C 语言开发出底层的功能,再为了使用的方便,用 C++ 进行简单的封装。反正我是不敢用 boost ACE 去写东西,一旦出了错,调试起来的痛苦程度我相信用过的人都知道。

 

分享到:
评论
26 楼 transist 2009-11-24  
bird_wang 写道
拜读了。
现在我也在一个做计费的公司里面,当初本想做开发的,后来被分配到实践那块去了,现在感觉除了学业务还是学业务,有时候都感觉自己很虚,想着要是以后跳槽了怎么办,一点技术都不会,真的像作者说的除了PL/SQL还是PL/SQL,呵


感觉在国内做应用软件开发的,业务积累的门槛比技术更高。
技术你可以自己学,业务需要工作单位给你这个实践平台。
计算机开发为什么门槛低,只因很多不同专业的都可以自学,这个行业开放性又强。其他行业其实只要有入门机会,不会比计算机开发复杂。
25 楼 tower 2009-09-04  
bigtreefxs 写道
对PL/SQL 不太熟悉,
使用C++操作oracle....噩梦的开始。
OCI接口不是一般的难用
相比之下,cli就好用多了~~


OCCI相对就简单很多了,可以试试。
24 楼 bigtreefxs 2009-09-03  
对PL/SQL 不太熟悉,
使用C++操作oracle....噩梦的开始。
OCI接口不是一般的难用
相比之下,cli就好用多了~~
23 楼 bird_wang 2009-07-30  
拜读了。
现在我也在一个做计费的公司里面,当初本想做开发的,后来被分配到实践那块去了,现在感觉除了学业务还是学业务,有时候都感觉自己很虚,想着要是以后跳槽了怎么办,一点技术都不会,真的像作者说的除了PL/SQL还是PL/SQL,呵
22 楼 lottons 2009-07-29  
roadray 写道
lottons 写道
呵呵,可以参考SOA的概念,把业务全部做成一个一个的服务。服务完全可以分布式部署,最后通过map服务器进行整合处理,用java的好处就可以在这一点上体现出来。
我觉得其实分布式计算在这种大型系统上应用是最合适的,大量的廉价服务器的性能要好过单一的大型服务器。而且使用分布式的好处就是可以很方便的扩展,现在业界的架构都是以分布式为基础的。
java在分布式上要由于c++

用廉价服务器,出了问题得移动的领导扛不住

难道用了soa的架构,部署服务就一定得用廉价服务器?这个是谁规定的?SOA架构主要体现在对服务的应用及整合上,这个概念用在电信行业是很合适的,看看电信网中各种网元设备,难道这些就不是服务?难道这些网元设备使用的就是高档服务器?建议去实际机房看看这些网元设备。
其实对我来说,计费系统和其他的网元设备一样都是提供一种服务的。将计费系统的服务和其他增值服务以及网元(智能网服务)进行整合是电信运营系统的大势所趋。
还有一点,就是这个不是差钱不差钱的问题,系统的部署有时候还要考虑地域,负载等一些列问题。各个系统的建设等级,如省级CRM或计费系统,地市级CRM或计费系统等等。这些系统在部署的时候难道不是在对外提供服务?这些服务也是需要进行整合的,难道它们就一定是部署在廉价的服务器上?不要混淆了我的意思。
21 楼 gainfirst 2009-07-27  
tower 写道
大家最好不要在帖子里面讨论谁谁是哪个公司的,如果感兴趣可以私聊,一点建议

强烈赞同,o(∩_∩)o...哈哈,tower说的对。其实我从tower中还是收益不少的。
20 楼 tower 2009-07-27  
大家最好不要在帖子里面讨论谁谁是哪个公司的,如果感兴趣可以私聊,一点建议
19 楼 lottons 2009-07-24  
gainfirst 写道
everlasting_188 写道
写的不错,java在电信中还不是核心的,因为性能要求(相对于c++处理大规模的数据来说),历史遗留问题,许多地方都不能用。



不对吧,电信中C和C++也只是计费系统中和OCS在用,像VC,10000号,服务开通,资源系统,渠道系统,代理商,经营分析以及CRM,ODS都是用java来实现的,电信中的核心系统应该是CRM,融合计费系统和结算,从这三个系统来看,java和C++/C所占的比列,还是java要高的。毕竟整个CRM都是用java,融合计费系统中的报表系统,销账和缴费前台以及综合查询都是用的是java,如果再算上OSS,那java的比重就更大啦,C/C++也只是在计费控制,销账等具体强调效率的时用的,总体来看电信的整个BOSS系统,java比重更大些。说到中间件,电信各个省份确实是weblogic,websphere和Tuxedo这三个的天下,Tuxedo就不说了,计费系统一般都是,weblogic和websphere相比,显然前者更具有优势,市场份额有增大趋势,后者应用的省份主要是是南方电信一些早期的省份,像江苏,四川,浙江,贵州,云南等,后者主要是体现在北方电信,比如最近割接的天津,内蒙,新疆,山东。中间的一些省份比如青海,陕西,安徽,宁夏等虽然用的也是webSphere,但是主要是前期的其他南方省份的影响(代码移植,代码部署和南方的统一)。但是还是阻挡不了weblogic一通天下的趋势,主要weblogic比webSpher部署起来更快捷,也更稳定吧(感觉),另外如果在本机上部署系统那就更麻烦啦,你如果用WSAD开发调试起来你就会发现那个慢的一塌糊涂,比eclipse可就差远啦(我们公司配置的电脑目前都是内存2G,主频2.2左右 ),所以现在其他省份也在计划将websphere换成weblogic,估计以后基本上都会用weblogic(计费的前台操作java的部署也都用的是weblogic)


楼上的是联创的吧,在哪个部门啊?CRM还是服务开通?
18 楼 gainfirst 2009-07-20  
everlasting_188 写道
写的不错,java在电信中还不是核心的,因为性能要求(相对于c++处理大规模的数据来说),历史遗留问题,许多地方都不能用。



不对吧,电信中C和C++也只是计费系统中和OCS在用,像VC,10000号,服务开通,资源系统,渠道系统,代理商,经营分析以及CRM,ODS都是用java来实现的,电信中的核心系统应该是CRM,融合计费系统和结算,从这三个系统来看,java和C++/C所占的比列,还是java要高的。毕竟整个CRM都是用java,融合计费系统中的报表系统,销账和缴费前台以及综合查询都是用的是java,如果再算上OSS,那java的比重就更大啦,C/C++也只是在计费控制,销账等具体强调效率的时用的,总体来看电信的整个BOSS系统,java比重更大些。说到中间件,电信各个省份确实是weblogic,websphere和Tuxedo这三个的天下,Tuxedo就不说了,计费系统一般都是,weblogic和websphere相比,显然前者更具有优势,市场份额有增大趋势,后者应用的省份主要是是南方电信一些早期的省份,像江苏,四川,浙江,贵州,云南等,后者主要是体现在北方电信,比如最近割接的天津,内蒙,新疆,山东。中间的一些省份比如青海,陕西,安徽,宁夏等虽然用的也是webSphere,但是主要是前期的其他南方省份的影响(代码移植,代码部署和南方的统一)。但是还是阻挡不了weblogic一通天下的趋势,主要weblogic比webSpher部署起来更快捷,也更稳定吧(感觉),另外如果在本机上部署系统那就更麻烦啦,你如果用WSAD开发调试起来你就会发现那个慢的一塌糊涂,比eclipse可就差远啦(我们公司配置的电脑目前都是内存2G,主频2.2左右 ),所以现在其他省份也在计划将websphere换成weblogic,估计以后基本上都会用weblogic(计费的前台操作java的部署也都用的是weblogic)
17 楼 roadray 2009-07-17  
lottons 写道
呵呵,可以参考SOA的概念,把业务全部做成一个一个的服务。服务完全可以分布式部署,最后通过map服务器进行整合处理,用java的好处就可以在这一点上体现出来。
我觉得其实分布式计算在这种大型系统上应用是最合适的,大量的廉价服务器的性能要好过单一的大型服务器。而且使用分布式的好处就是可以很方便的扩展,现在业界的架构都是以分布式为基础的。
java在分布式上要由于c++

用廉价服务器,出了问题得移动的领导扛不住
16 楼 tower 2009-06-08  
lottons 写道

呵呵,可以参考SOA的概念,把业务全部做成一个一个的服务。服务完全可以分布式部署,最后通过map服务器进行整合处理,用java的好处就可以在这一点上体现出来。 我觉得其实分布式计算在这种大型系统上应用是最合适的,大量的廉价服务器的性能要好过单一的大型服务器。而且使用分布式的好处就是可以很方便的扩展,现在业界的架构都是以分布式为基础的。 java在分布式上要由于c++

计费不会搞很多廉价服务器的,原因大致有二:
1、IT管理水平到不了这个程度
2、中国移动不差钱
15 楼 anky_end 2009-06-08  
计费用c是历史问题,何况国外电信业务和中国可比性不强,我们一个省的业务比的上国外一个国家的业务了
14 楼 lottons 2009-06-08  
呵呵,可以参考SOA的概念,把业务全部做成一个一个的服务。服务完全可以分布式部署,最后通过map服务器进行整合处理,用java的好处就可以在这一点上体现出来。
我觉得其实分布式计算在这种大型系统上应用是最合适的,大量的廉价服务器的性能要好过单一的大型服务器。而且使用分布式的好处就是可以很方便的扩展,现在业界的架构都是以分布式为基础的。
java在分布式上要由于c++
13 楼 xiaolin0105 2009-06-06  
leadyu 写道
tower 写道
xiaolin0105 写道
有电信计费系统是用java写的。而且所有业务逻辑都放在app层。
solaris+oracle+jboss+ejb2。 scale的非常好。

业务这种东西,还是不要用pl/sql写。


能说说是哪个厂商的产品,在哪个省用吗?很感兴趣


在线计费没见过java写的,后付费的还是有地


online billing也是IPX的提供的服务里的一种。
12 楼 leadyu 2009-06-06  
tower 写道
xiaolin0105 写道
有电信计费系统是用java写的。而且所有业务逻辑都放在app层。
solaris+oracle+jboss+ejb2。 scale的非常好。

业务这种东西,还是不要用pl/sql写。


能说说是哪个厂商的产品,在哪个省用吗?很感兴趣


在线计费没见过java写的,后付费的还是有地
11 楼 xiaolin0105 2009-06-06  
tower 写道
xiaolin0105 写道
有电信计费系统是用java写的。而且所有业务逻辑都放在app层。
solaris+oracle+jboss+ejb2。 scale的非常好。

业务这种东西,还是不要用pl/sql写。


能说说是哪个厂商的产品,在哪个省用吗?很感兴趣


是爱立信的IPX,在全球范围内使用,做电信运营商和内容供应商之间的计费和消息业务,整合了500家运营商和4000多家内容供应商。

比如你人在美国,通过手机上德国的网站定了个飞机票,那么就可以跨国计费了。作为内容供应商,就不用考虑怎样和国外当地电信运营商整合以及法律,税务和计费的问题了,IPX都帮忙搞定了。
10 楼 tower 2009-06-05  
xiaolin0105 写道
有电信计费系统是用java写的。而且所有业务逻辑都放在app层。
solaris+oracle+jboss+ejb2。 scale的非常好。

业务这种东西,还是不要用pl/sql写。


能说说是哪个厂商的产品,在哪个省用吗?很感兴趣
9 楼 xiaolin0105 2009-06-05  
有电信计费系统是用java写的。而且所有业务逻辑都放在app层。
solaris+oracle+jboss+ejb2。 scale的非常好。

业务这种东西,还是不要用pl/sql写。
8 楼 lottons 2009-06-05  
tower 写道
ihad 写道
刚进这一行,C不行,分到CRM线。前辈有时间介绍点电信CRM的东西。


电信的CRM实际上跟其他系统的CRM差别不大,业务有点不一样而已,比较麻烦的是数据模型。


要怎么看了,就理论上大家都是CRM吗,不过要是想要把电信的CRM做好其他系统的CRM还是有很大差异的。可以到网上找找中国电信的规范看看。
我现在在研究siebel,其实很多东西还是存在很大差异的。
7 楼 tower 2009-06-05  
neu_gefei 写道
在做CRM,感觉还是计费系统对开发人员的要求更高一些。毕竟安全性和稳定性要求比CRM要高很多。

不好这么说,都是电信级的。

相关推荐

    漫谈信号与系统.pdf

    《信号与系统》是一门重要的工科电子类专业课程,主要研究信号的处理以及系统对信号的响应。在这篇文章中,作者用故事性的叙述方式,通俗易懂地解释了卷积、傅利叶变换以及拉普拉斯变换等信号处理中核心的概念,使得...

    漫谈网站开发规范

    漫谈网站开发规范,漫谈网站开发规范,漫谈网站开发规范

    漫谈文化系统中的艺术.pptx

    漫谈文化系统中的艺术.pptx

    漫谈求生之路的AI系统

    《漫谈求生之路的AI系统》 在游戏开发领域,人工智能(AI)系统的应用日益广泛,尤其是在生存类游戏中,如《求生之路》系列。本文将深入探讨该系列游戏中的AI系统,揭示其如何为玩家带来逼真的游戏体验。 首先,...

    客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析.docx

    ### 客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析 #### 原生开发技术 ##### Microsoft阵营 **WinForm** - **简介**:WinForm是.NET框架的一部分,用于创建Windows图形用户界面的应用程序。它是.NET ...

    漫谈Windows系统安全模式妙用全接触.doc

    漫谈Windows系统安全模式妙用全接触.doc

    漫谈兼容内核.zip

    漫谈兼容内核之一:ReactOS怎样实现系统调用 漫谈兼容内核之二:关于kernel-win32的对象管理 漫谈兼容内核之三:Kernel-win32的文件操作 漫谈兼容内核之四:Kernel-win32的进程管理 漫谈兼容内核之五:Kernel-win32...

    漫谈兼容内核.7z

    谈兼容内核之一:ReactOS怎样实现系统调用.pdf 漫谈兼容内核之二:关于kernel -win32的对象管理.pdf 漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 漫谈兼容内核之四:Kernel-win32的进程管理.pdf 漫谈兼容内核...

    漫谈兼容内核 毛德操

    通过阅读《漫谈兼容内核》,读者不仅可以了解内核兼容性的理论知识,还能掌握实际操作中的关键技术和方法,这对于从事操作系统开发、系统集成、虚拟化技术或跨平台软件开发的工程师来说,是一份宝贵的参考资料。

    漫谈兼容内核[pdf]

    01.漫谈兼容内核之一:Wine的系统结构.pdf 02.漫谈兼容内核之二:关于kernel-win32的对象管理.pdf 03.漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 04.漫谈兼容内核之四:Kernel-win32的进程管理.pdf 05.漫谈...

    漫谈兼容内核 电子版

    《漫谈兼容内核》是一本深入探讨操作系统内核,特别是Linux与Windows内核之间差异与共性的电子书籍。此书对于理解这两种广泛使用的操作系统核心的运作机制具有极高的价值。通过对内核的剖析,我们可以了解到操作系统...

    嵌入式处理器漫谈(嵌入式系统)

    ### 嵌入式处理器漫谈(嵌入式系统) #### 一、嵌入式系统的概念 嵌入式系统是一种专用计算机系统,被设计用于执行特定功能或一组功能。它通常由一个或多个微处理器组成,并包含软件和硬件组件。这些系统广泛应用...

    系统架构漫谈.pptx

    在《系统架构漫谈》的演示文稿中,主要讨论了“全新系统架构—基于中台和容器”的设计理念与实践方法。这一架构旨在通过高度集成且松散耦合的方式提高系统的灵活性、可扩展性和性能表现。 #### 高内聚低耦合 - **...

    漫谈如何学习操作系统原理

    漫谈如何学习操作系统原理,欢迎需要的童鞋下载

    软件工程思想漫谈软件工程思想漫谈

    ### 软件工程思想漫谈关键知识点解析 #### 一、软件工程的起源与发展 在计算机技术发展的早期阶段,程序设计是一项极具挑战性的任务,往往由极少数智力和技术超群的人来完成。这一时期的编程活动较为随意,缺乏...

    漫谈Wine之一:Wine的系统结构.pdf

    ### 漫谈Wine之一:Wine的系统结构 #### 一、Wine简介及研究背景 **Wine**(Wine Is Not an Emulator)是一个兼容层,旨在允许在类Unix系统(如Linux)上运行Microsoft Windows应用程序。本文档主要探讨Wine的核心...

Global site tag (gtag.js) - Google Analytics