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;
整個部署過程這樣就已經快速完成了,目前關於代碼位置的設置,後期可考慮再靈活一下
待完善.....
項目是會實際生產環境持續應用,持續優化。。。。,有興趣的同窗能夠指導指導,多多參與,多謝。