微服務之RPC

現微服務盛行,服務之間通訊大概就兩種方式ApiRpc。 下面兩個列子來讓你瞭解ApiRpc的區別。php

列子一 文章的增刪改查。

Api 實現:

Router::get('/article/{id}','ArticleController@get');
Router::post('/article','ArticleController@create');
Router::put('/article/{id}','ArticleController@edit');
Router::delete('/article/{id}','ArticleController@delete');

而後在控制器Article調用模型git

return Article::find($id)->toArray();

Rpc 實現

RpcServer::add('Article');

沒錯就一行代碼github

列子二 計算器

假如機器A上面一個計算器 Counter,以Rpc的方式提供給其餘機器使用.框架

計算器Counter代碼微服務

class Counter
{

    private $i = 0;

    public function __construct($i = 0)
    {
        $this->i = $i;
    }

    // 加法
    public function add($v)
    {
        $this->i += $v;
        return $this;
    }

    // 減法
    public function sub($v)
    {
        $this->i -= $v;
        return $this;
    }

    // 乘法
    public function mul($v)
    {
        $this->i *= $v;
        return $this;
    }

    // 除法
    public function div($v)
    {
        $this->i /= $v;
        return $this;
    }

    // 獲取結果
    public function get()
    {
        return $this->i;
    }
}

Rpc 實現

RpcServer::add('Counter');

Rpc客戶端調用post

$c = new ClientCounter(10);
echo $c->add(3)->mul(2)->sub(10)->div(5)->get();

Api 實現:

你以爲 Api 應該怎麼實現?this

以上代碼是我在設計 one框架的一些思考?設計

如你喜歡請star https://github.com/lizhichao/onecode

如其餘觀點,歡迎留言討論.get

相關文章
相關標籤/搜索