TTsoa分佈式服務簡單框架的簡明的文檔

TTsoa

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

特性

  • 供應者容器用golang的協程實現
  • 供應者服務支持多種語言(服務端), 消費者也支持多種語言(客戶端)
  • 提供服務接口的信息展現,分析等
  • 支持本地容器接口和遠程 HTTP/SOCKET 接口
  • 支持 負載均衡, 接口緩存等功能
  • 服務API可分佈在不一樣的服務器上,實現高可用

提供者容器安裝/運行

cd ./ttsoa/provider;
go build;
./provider

目前在端口 7777 運行容器服務mysql

Quick Start 快速開始

目錄說明
  • ├─consumer     消費者程序
  • │ └─php       PHP範例
  • ├─monitor      服務信息展現中心
  • ├─provider      提供者容器程序
  • │ └─services     提供者服務程序(多語言支持),包含PHP和java範例
  • └─test        開發過程當中的一些測試代碼
提供者程序編寫/部署

提供者容器運行以後, 會在服務器的 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

  1. 消費者端的功能封裝邏輯( 負責負載均衡, 權限訪問,跟monitor中心通訊等邏輯),每一種語言的消費者端封裝都包括這些功能邏輯的實現json

  2. 消費者請求提供者的服務邏輯(包括信息的加密,加速等)bootstrap

具體部署步驟爲:

  • 定義服務接口文件, json格式說明,MD格式顯示很差,查看文件 json_format.txt 說明

假如是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;

整個部署過程這樣就已經快速完成了,目前關於代碼位置的設置,後期可考慮再靈活一下

性能測試

待完善.....

即將編寫的功能

  • 三種負載均衡的算法,隨機,最小訪問,權重值
  • 各類語言的消費者端封裝程序的完成(目前只作了一下PHP的,可用而已)
  • monitor程序編寫(打算用CI3.X + bootstrap)
  • 性能優化, 提供者容器, 消費者訪問接口等關鍵功能點

項目是會實際生產環境持續應用,持續優化。。。。,有興趣的同窗能夠指導指導,多多參與,多謝。

源碼地址:https://github.com/halokid/ttsoa

相關文章
相關標籤/搜索