你真的瞭解RPC嗎?

探索者發表於2019-02-16

現微服務盛行,服務之間通訊大概就兩種方式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

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

相關文章