电信行业软件的十大特点

来源:互联网 发布:帝国cms 使用程序代码 编辑:程序博客网 时间:2024/05/24 16:16

Bjarne Däcker. Concurrent functional programming for  telecommunications: A 
case study of technology introduction. November 2000. Licentiate Thesis. 

在Joe Armstrong的 面对软件错误构建可靠的分布式系统》(Making reliable distributed systems in the presence of software errors)中也有分析。

Concurrent     

•operatingor occurring at the same time
•not parallelism
•线程和进程不能真正解决并发问题

Realtime

•精确地进行定时响应
•软实时
•数据库实时性,垃圾回收GC

Distribute
•无共享系统
•共享系统
•电信系统必须快速共享一些信息,且不能完全基于“无共享”的架构来实现。
•无共享系统最终会有一个地方来共享状态。后台数据库/内存缓存区/磁盘文件。
•在任何情况下,几乎没有不共享状态的系统。
•无缝分布式支持真正激动人心之处在于对象状态的内存化存储
Interaction with hardware 
•电信领域,一些特定的操作是不可能只靠软件来实现的共享系统
•硬件驱动
二进制编解码
Very large software systems 
•有很多程序员在同一份代码库基础上工作
•必须支持在系统朝着某个目标方向演进代码而不影响其他目标
•编译速度是很重要的
•必须很容易构造出其他程序员可使用的接口
•软件的某部分代码在数年时间内被反复修改。修改后的部分必须能够很好的组合在一起
•需要有办法来将程序分割成多个软件包和软件模块
•需要有办法来获取不同的模块,描述它们的依赖关系,然后将它们组装成一个可以工作的系统。你也希望最好能够无缝升级软件的某一部分,同时软件的其他部分保持不变。这就意味着你必须准备好在某个时间点替换某个软件包,且不需要回退并修改软件的其他部分。
Complex functionality
•webserver只有一个单一的交互链:客户端直接访问数据库。其他绝大部分工作只不过是满足这个主需求而存在的粘合剂而已
•系统的众多不同功能以错综复杂的方式相互作用。不能使用数据库来存储这些变化,而要把它们存储在主内存中,否则处理起来就太慢了。
•编程语言的重要特性是允许你编写出精细复杂的解决方案,以便解决系统不同部分用各种非同寻常方式交互的问题。
Continuous operation 
•不能停机来进行维护
•必须能够在系统运行的同时检查故障
•并发约束意味着不能让系统真的停机
• CPU(MIPS、 Digital Alpha、x86、HP-PA RISC、Sun SPARC、 PowerPC)
•OS:OS/2、Windows、不同方言的UNIX、VxWorks、 QNX、 NeXt
•方便移植比执行速度或硬件利用率更重要
•虚拟机!!
Software maintenance without stopping the system
•软件运行时进行自检和升级
Stringent quality and reliability requirements 
•垃圾回收GC
•函数式编程
•不绑定整数大小
•更少的变量
•OTP
•API
Fault tolerance both to hardware failures and softwareerrors 
•任何分布式系统中,任何忽略Crash的设计都是耍流氓
•系统不可避免有硬件或软件错误。你能控制的是错误率。即使在高度一致的单机系统,系统也可能会崩溃。这意味着错误率永远不可能是0,分布式系统更是如此。所有你没有考虑到的东西都可能是一个故障,必须在构建系统时就能容忍这些故障。这件事处理起来相当复杂,Erlang内建了一个工具箱来帮助你处理很多这类令人讨厌的错误。

1 0
原创粉丝点击