2017-07-15 9 views
-1

私の会社はいくつかのHTTP APIサービスを構築します。これらのサービスは1つのHTTPポートを共有します。golang microservicesの使い方は?

解決策は今、私たちはルータという名前のプロジェクトを作成し、ルータはいくつかのモジュールをインポートします。すべてのリクエストは、ルータを経由してモジュールに渡されます。
しかし、これらのモジュールの1つがクラッシュした場合、ルータがクラッシュするだけです。

解決方法はありますか?

が必要:

  1. 1つのHTTPポートを。
  2. すべてのサービスは独立しています。

私はgo-kitをよく知っていますが、私も試しましたが、まだ理解していません。

+1

マイクロサーブは価値があるよりも面倒です。一般的なルールとして、_teams_間のメンテナンスオーバーヘッドがソフトウェア開発の過程にある場合にのみマイクロサービスを使用するべきです。そして、チームごとに1つのマイクロサービスを書くべきでしょう。 あなたの唯一の懸案事項がモジュールクラッシュであれば、 'recover'を使ってパニックをキャッチしてください。 – Flimzy

答えて

0

Go-kitおよびgo-microは、マイクロサービスを作成するためのもので、問題は解決しません。

あなたは、インスタンスnginxのために、あなたのアプリケーションの前にリバースプロキシを使用する必要があります。ここではhttps://www.nginx.com/resources/admin-guide/reverse-proxy/

は何をしたいんnginxの設定ファイルの例です:

server { 
    listen 80 default_server; 
    server_name your-domain; 

    location /app1 { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_pass http://localhost:3000; 
    } 

    location /app2 { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_pass http://localhost:4000; 
    } 
} 

この方法では、あなたはまだ異なるポートにアプリケーションをデプロイしますが、ポート80を通してしか公開されません。

+0

偉大な答え。質問はリバースプロキシを叫ぶ。 – Zahymaka

0

あなたが探しているのはAPIゲートウェイです。 API-ゲートウェイも逆プロキシの一形式です。私はTyk、Traefik、Zuulのような完全なソリューションを見てきました。もちろん、Nginxを使うこともできますが、OpenID-Connect/OAuthのクライアントなど、Luaスクリプトを使って組み込む必要があるかもしれません。セキュリティ、ロギング、メトリック、レート制限(動的ルーティング)などが考慮されます。私は本当にNginx上で私のAPIゲートウェイのベースにはなりません。 Nginx-PlusにはAPIゲートウェイが含まれていますが、支払いが必要です。

私は現在非常に大きなプロジェクトに取り組んでおり、上記のソリューションのためのプラグインの形で多くのカスタマイズ作業が必要であることがわかりました。実際、Golangとライブラリを使用して、自分のAPIゲートウェイを一から書くのはずっと簡単です。

あなたはgo-kitとmicroを試してきたと言われて以来、私はTraefikを設定するのはとても簡単で、便宜のためにWeb UIを含んでいます。

0

私がWindowsでGoマイクロサービスをホストするために使用した手法は、Windows用のexeファイルを生成したgo install <main-package-file>を実行するだけです。次に、SCを使ってWindowsサービスを作成しました。その後、通常のWindowsサービスとして実行してください。このようにして、Nginxやそのようなエンジンは必要ありませんでした。

関連する問題