你真的瞭解RPC嗎?

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

列子一 文章的增刪改查。

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調用模型


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

Rpc 實現


RpcServer::add('Article');

沒錯就一行代碼

列子二 計算器

假如機器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客戶端調用


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

Api 實現:

你覺得 Api 應該怎麼實現?

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

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

如其他觀點,歡迎留言討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章