spring bootは、複数のサービスエージェントを要求する完全なステップを構成する。
springboot配置サービス代理
時々、次のような需要があります。
つまり、分散サービスに対しては、様々な業務インターフェースサービスがありますが、サーバー上では上の図のようなサービスのポートだけを開放することが要求されるかもしれません。
それは、restaを訪問することによって、一定の仕様に合致する経路を要求することができるということを思い出しました。http://ip:port/test 要求がリセットで始まるときは、再度、要求をリセットして、レスB項目に転送すればいいです。
もちろん代理転送は多くの解決方法があります。インゲン、ズウルなどは全部実現できますが、インゲンは簡単ですが、一つのサービスを追加しなければなりません。zulは配置が面倒です。
Baiduを経て、ここで言うもの、ServletRegistration Beanの注入は、かなり簡単な構成が見つかりました。servletを導入しました。具体的に見たことがありません。
設定手順を書きます。
1、プロジェクト構造と紹介
以下は私のプロジェクトの構造です。青い項目を選んで私達のために配置したい項目です。他の項目は先に無視して、dubboとzookeeperの配置に基づいています。
プロジェクトはGitHubに載せられました。ダウンロード項目はGitHubアドレスです。
このプロジェクトについての紹介は以下のようになります。
上の図の中でsuite oneeservice、suitetwoservice、masterserviceプロジェクトについては、私達のサービスインターフェースのリリース先プロジェクトです。ここでは絵を描くだけです。私たちが配置する内容とは関係がありません。
suiteone、suitetwoプロジェクトのポートは外に置かれていません。ユーザーは直接にアクセスできません。masterプロジェクトは直接にアクセスできるので、ユーザーはmasterプロジェクトにアクセスすることによって、masterプロジェクトから要求エージェントに転送されます。
2、具体的な配置手順
主な配置が少なく、マスタープロジェクトにあります。
(1)依存性の導入:
このクラスはダウンロードされたマスタープロジェクトの構成を参照することができます。
マスタープロジェクトの主な構成ファイル、つまり、appication.propertiesファイルには、以下の内容を追加します。
30000ポートはsuiteoneプロジェクトで、3002ポートはsuitetwoプロジェクトで、プロジェクトをダウンロードした後、それぞれmaster、suiteone、suitetwoプロジェクトのスタートクラスを起動し、起動が完了したらアクセスします。http://localhost:30000/testone/test/get1 すなわち、suiteoneプロジェクトtest/get 1インターフェースの内容を返します。
このような構成はget、post要求に対しても有効である。
以上が完全な構成内容です。
分からないことがあったら、ダウンロードして項目を見てください。GitHubアドレス
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持ってほしいです。ありがとうございます。
時々、次のような需要があります。
つまり、分散サービスに対しては、様々な業務インターフェースサービスがありますが、サーバー上では上の図のようなサービスのポートだけを開放することが要求されるかもしれません。
それは、restaを訪問することによって、一定の仕様に合致する経路を要求することができるということを思い出しました。http://ip:port/test 要求がリセットで始まるときは、再度、要求をリセットして、レスB項目に転送すればいいです。
もちろん代理転送は多くの解決方法があります。インゲン、ズウルなどは全部実現できますが、インゲンは簡単ですが、一つのサービスを追加しなければなりません。zulは配置が面倒です。
Baiduを経て、ここで言うもの、ServletRegistration Beanの注入は、かなり簡単な構成が見つかりました。servletを導入しました。具体的に見たことがありません。
設定手順を書きます。
1、プロジェクト構造と紹介
以下は私のプロジェクトの構造です。青い項目を選んで私達のために配置したい項目です。他の項目は先に無視して、dubboとzookeeperの配置に基づいています。
プロジェクトはGitHubに載せられました。ダウンロード項目はGitHubアドレスです。
このプロジェクトについての紹介は以下のようになります。
上の図の中でsuite oneeservice、suitetwoservice、masterserviceプロジェクトについては、私達のサービスインターフェースのリリース先プロジェクトです。ここでは絵を描くだけです。私たちが配置する内容とは関係がありません。
suiteone、suitetwoプロジェクトのポートは外に置かれていません。ユーザーは直接にアクセスできません。masterプロジェクトは直接にアクセスできるので、ユーザーはmasterプロジェクトにアクセスすることによって、masterプロジェクトから要求エージェントに転送されます。
2、具体的な配置手順
主な配置が少なく、マスタープロジェクトにあります。
(1)依存性の導入:
<!--ProxyFilter -->
<dependency>
<groupId>org.mitre.dsmiley.httpproxy</groupId>
<artifactId>smiley-http-proxy-servlet</artifactId>
<version>1.7</version>
</dependency>
(2)配置クラス:このクラスはダウンロードされたマスタープロジェクトの構成を参照することができます。
package microservice.sc.config;
import org.mitre.dsmiley.httpproxy.ProxyServlet;
import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
/**
* Created by lsf on 2018/7/31.
*/
@Configuration
public class ProxyServletConfiguration implements EnvironmentAware {
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_one"));
// setName , ,
servletRegistrationBean.setName("suitone");
servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_one"));
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false"));
return servletRegistrationBean;
}
@Bean
public ServletRegistrationBean servletRegistrationBean2(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_two"));
// setName , ,
servletRegistrationBean.setName("suittwo");
servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_two"));
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false"));
return servletRegistrationBean;
}
private RelaxedPropertyResolver propertyResolver;
@Override
public void setEnvironment(Environment environment) {
this.propertyResolver = new RelaxedPropertyResolver(environment, "proxy.test.");
}
}
(3)、プロキシアドレスの設定:マスタープロジェクトの主な構成ファイル、つまり、appication.propertiesファイルには、以下の内容を追加します。
# testone 30001
proxy.test.servlet_url_one=/testone/*
proxy.test.target_url_one=http://localhost:30001
# testtwo 30002
proxy.test.servlet_url_two=/testtwo/*
proxy.test.target_url_two=http://localhost:30002
上の配置を簡単に紹介します。testone/*という書き方については、要求経路がtestoneで始まるという意味です。http://localhost:30000/testone/test/get1 このような経路は、本当に要求される経路はhttp://localhost:30001/test/get1 。主にtestoneを対応するプロキシパスに置き換えるだけです。*の意味は実際にプロジェクトのインターフェースのパスを要求することです。30000ポートはsuiteoneプロジェクトで、3002ポートはsuitetwoプロジェクトで、プロジェクトをダウンロードした後、それぞれmaster、suiteone、suitetwoプロジェクトのスタートクラスを起動し、起動が完了したらアクセスします。http://localhost:30000/testone/test/get1 すなわち、suiteoneプロジェクトtest/get 1インターフェースの内容を返します。
このような構成はget、post要求に対しても有効である。
以上が完全な構成内容です。
分からないことがあったら、ダウンロードして項目を見てください。GitHubアドレス
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持ってほしいです。ありがとうございます。