My Tuxedo源代码

程序简介
My Tuxedo是模仿Oracle Tuxedo开发的中间件软件,在Linux下开发,可移植到其他UNIX系统下编译运行。

My Tuxedo实现了一个单机版的中间件,有着与Oracle Tuxedo一致的调用接口。
很多年前接触到Tuxedo中间件时,觉得它简洁、易用、结构清晰,于是也希望自己能开发一个类似的软件。 现在模仿它的机制自己开发一个类似的软件,也能更好的理解它的架构,配置参数和一些标志位的含义。

这里提供的是一份完整的源代码,源代码包中还包含了一份详细的设计文档,里面有开发软件时的一些设计思想,对系统架构的一些思考。

阅读这个软件的源代码,可以学习从零开始构建一个复杂系统的过程。如果在别人开发好的系统中修改一些代码可能比较容易,如果自己要 从头设计开发一个全新的系统就会很有难度,在这个软件中你能看到在设计之前需要考虑哪些问题,怎样做可扩展的设计,系统怎样启动, 怎样停止,进程之间怎样协调,怎样传递数据,怎样考虑负载均衡,客户端的接入等等。一个好的系统要能长期运行,不断完善,稳定可靠, 不能在上面用打补丁的方式修改错误,以致最后无法维护。
所需知识
这个软件是在Linux下用C语言开发的,因此在阅读源代码前需要熟悉C语言、UNIX常用的一些系统调用、System V 的IPC通信技术
源码列表
这里把源代码中的C语言文件列在下面,可以对程序的结构和规模有个直观印象。

listener/listener.c
listener/perform_socket.c
listener/destroy_listener.c
listener/check_server.c
listener/workstation_request.c
listener/search_server.c
listener/signal_handle.c
listener/internal_request.c
listener/create_listener.c
listener/check_socket.c
listener/convert.c
listener/check_command.c
listener/add_workstation.c
listener/clean_workstation.c
listener/workstation_ack.c
loadcf/write_binary_file.c
loadcf/load_server.c
loadcf/search_section.c
loadcf/load_to_buffer.c
loadcf/load_resource.c
loadcf/load_machine.c
loadcf/loadcf.c
console/get_shmm_key.c
console/signal_handle.c
console/start.c
console/copyright.c
console/stop.c
applib/tpsend.c
applib/appsvr.c
applib/tpforward.c
applib/internal_request.c
applib/tprecv.c
applib/convert.c
applib/userlog.c
applib/ulog.c
applib/tpaccept.c
applib/check_command.c
applib/tpreturn.c
applib/command.c
server/create_server_queue.c
server/start_server.c
server/start_action.c
server/remove_ipc.c
server/signal_handle.c
server/stop_action.c
server/get_shmm_key_size.c
server/server.c
server/install_service.c
server/start_instance.c
server/execute_command.c
server/check_all_server.c
server/stop_server.c
server/stop_instance.c
server/start_daemon.c
server/load_config.c
wslib/tpsend.c
wslib/tpterm.c
wslib/tpcall.c
wslib/tpdiscon.c
wslib/tpfree.c
wslib/tpconnect.c
wslib/tprecv.c
wslib/tpgetrply.c
wslib/convert.c
wslib/tpalloc.c
wslib/tpinit.c
wslib/ulog.c
wslib/tpacall.c
lib/get_queue_capacity.c
lib/trim.c
lib/alarm_handle.c
lib/recv_command.c
lib/get_queue_depth.c
lib/ulog.c
lib/send_command.c
lib/recv_message.c
lib/mask_signal.c
lib/send_message.c
lib/clean_queue.c
lib/close_shmm.c
lib/open_shmm.c

运行环境
下载的测试代码在64位 CentOS 5.6 上测试通过

Linux内核版本 2.6.18
在这个版本以上的Linux x86_64环境应该都可以运行
下载测试