distributed API services all in one, include provider, consumer, monitor. provider use golang, moniter use PHP, the services info will store in mysql database. include some consumer test code base on PHP.php
一个用golang和PHP开发的SOA基型架构, 包括供应者, 消费者,注册中心java
cd ./ttsoa/provider; go build; ./provider
目前在端口 7777 运行容器服务mysql
提供者容器运行以后, 会在服务器的 7777 端口监听服务,假如咱们要写一个PHP的提供者程序git
在 provider/services/php 目录之下, java的程序也按照这种代码部署形式, 好比咱们要执行User类下的ulist方式,编写类文件放在PHP目录下github
namespace TTsoa; class User { public function ulist() { echo 'User list'; } }
保证提供者程序在部署的服务器 能够用 php xx.php
的形式运行, 提供者容器最终是请求服务器的CLI的,就等于CGI程序的原理同样, PHP要加入系统的env里面,能直接运行golang
java的范例具体看代码算法
TTSOA把负载均衡, 高可用这些逻辑处理封装在消费者端, 因此消费者端分两部分sql
消费者端的功能封装逻辑( 负责负载均衡, 权限访问,跟monitor中心通讯等逻辑),每一种语言的消费者端封装都包括这些功能逻辑的实现json
消费者请求提供者的服务逻辑(包括信息的加密,加速等)bootstrap
具体部署步骤为:
假如是PHP的消费者端,代码部署在 ./consumer/php/ 下面
<?php require_once 'inc/ttConsumer.php'; //load packing file $jStr = file_get_contents('./consumer.json'); //get config json $serviceList = json_decode($jStr, true); $userSvs = $serviceList['user_java']; //load user services config, java sample $cs = new TTsoa\Consumer($userSvs['hosts']); //java provider sample $res = $cs->setEngine($userSvs['engine'])->balanceServ('random')->getService('/TTsoa/UserImpl'); echo $res;
整个部署过程这样就已经快速完成了,目前关于代码位置的设置,后期可考虑再灵活一下
待完善.....
项目是会实际生产环境持续应用,持续优化。。。。,有兴趣的同窗能够指导指导,多多参与,多谢。