マイクロプロセッサベースのサービスフレームワークのダボのbubbo +飼育係の生産はマイクロサービスが何であるかで見てみましょう、日付の少し外であると言うことができます。
各マイクロサービスAPIは、アプリケーションシステムが効果的に分割され、APIの呼び出し、他のアプリケーション、実装にサービスを提供し、通話中に一連の問題を解決するために接続されているいくつかの方法で、統合マイクロサービスアーキテクチャであります
名前が示すように、マイクロサービスを理解するには、2つの方法があり、「マイクロ」何で、何である「サービス」。
マイクロ
単純な話は簡単なの開発に、どこでも実行、小さいです。複雑なのconfigureの伝統的な春のMVCフレームワークは、厄介なプロジェクトの依存関係は、多くの場合、開発と保守頭痛を作ります。
サービス
いわゆるサービスは、ユーザが機能の最小セットを知覚することができる、システム、サービス、または比較的小さく、独立した機能ユニットのセットから区別されなければなりません。
2014年にMartin Fowler氏とジェームズ・ルイスの共催によるマイクロサービスまず、マイクロサービスアーキテクチャスタイルである単一のアプリケーションモードのアプローチを開発するために、サービスの小さなセットを使用して、独自のプロセスの各サービスの実行を、そして軽量の使用通信メカニズム、通常HTTP APIは、これらのサービスは、演算能力開発に基づいており、展開機構を自動化することによって独立して展開することができ、これらのサービスは、さまざまなプログラミング言語、ならびに異なるデータ・ストレージ・テクノロジーを使用して、集中管理の最小値を維持します。
スプリットのアプリケーション
プログラマA、B、Cは、彼らは今注文管理システムのセットを開発する必要があります。
単一プログラマシステムアーキテクチャ、サービスコードは、MVCの分割先端部は、PHPはレイヤをレンダリング使用して作りません。
その後、プログラマーBマルチアプリケーションアーキテクチャ、製品、注文、物流、作業指示、顧客サービスなどスプリットレベルのアプリケーションを行い、直接またはTCP対話するREST APIを使用し、各アプリケーションは、独自に開発MVCシステム、です。
Cプログラマはマイクロサービス、製品、受注、物流、作業指示、顧客サービスを使用してので、スプリットレベルのアプリケーションを行い、その後、マイクロサービスフレームワークを使用することは、このような順序の追跡リストとして、彼らは一つのサービスに押し入り、スプリット、製品のリストになりますトラッキングは、製品が照会サービスを詳述します。1つのサービス構成アプリケーションを使用して、注文管理システムに統合
道のアーキテクチャのみデイトンの上、同社のアプリケーションを食べるために、少量のプログラマできることは間違いありません。
プログラマB・アーキテクチャは、非常に良いに適応するには、このアーキテクチャの早期電子ビジネスプラットフォーム・ロジックアーキテクチャのほとんどに似ていますが、システムの継続的な拡大に伴い、メンテナンスは、アプリケーションの呼び出しと一緒に、変更のバージョン間で非常に複雑な、APIとなり複雑なニーズの多様。
アーキテクチャBの進化によって、Cプログラマのアーキテクチャモデルは、わずかなサービスを生まれました。マイクロ理解サービスは製品のリストを追跡し、追跡受注、製品の詳細情報照会サービスのセグメント化、分化のリストのようになりますということです。だから、私たちのコードは、システム全体の開発努力が完全にシステム全体の管理能力を強化するために、マイクロおよびサービス管理サービス、ヒューズ、負荷分散などの機能を統合することができ、統一されたゲートウェイを介して一体化させることができます。
現在、大規模なサイトに対処するためのアーキテクチャの背景には、マイクロ・サービスは、パターンの最も適切なセットです。例のダボの開発アプローチは、実際には比較的簡単であるため、マイクロサービスの同時春ブーツが理解できる、開発者がより簡単かつ容易に理解することができるように、春の雲は、友人に比較チャートを借りて、深く統合春のブートを行う機能です。
図出典ます。https://blog.csdn.net/zhouyanqingbfq/article/details/79407285
また、いくつかのブロガーをコンパイルしたマイクロサービスの概念についての知識の多くは、あります。
https://blog.csdn.net/fly_zhyu/article/details/76408158
https://www.cnblogs.com/wintersun/p/6219259.html
春ブーツ
春ブーツは新しい技術ではありませんので、神経質になることはありません。本質的には、春ブーツは、それはあなたが設定を行いますことのないものをやったとして春、春の豆です。それはあなたのプロジェクトのアップ、迅速に実行しているを取得するには、「設定オーバー習慣」(あなたが手動で設定する必要はありませんので、設定は、内蔵の習慣の構成に加えて、多数のプロジェクトが存在する)という概念を使用しています。使用春ブーツは非常に簡単に別の実行(実行jarファイル、埋め込まれたサーブレットコンテナ)、プロジェクトの生産ベースのSpringフレームワークのレベルを作成するには、春ブーツがほとんど、あるいは春の設定を必要と使用することはできません。
このセクションでは、もはやブロガーがここにあなたがそれのいくつかをすることを前提と人々のこのブログを通じてクリックし、我々は次のようになり、いくつかの情報を提供し、詳述します。
呉服:( a)のエレガントな初心者の春ブーツシリーズ[ターン]
春の雲
春の雲はすぐに(例えば、構成管理、サービス検出、回路ブレーカ、インテリジェントなルーティング、マイクロプロキシ、制御バス、ワンタイムトークン、グローバルロック、リーダーシップの選挙は、分散型分散システムで一般的なパターンの一部を構築する開発者のためのツールを提供しますセッション、クラスタ状態)。ボイラープレートパターンに分散システムのリードの調整、および使用して春のクラウド開発者はすぐにこれらのパターンを実装するサービスやアプリケーションを立つことができます。彼らは、開発者自身のラップトップ、ベアメタルのデータセンター、および、そのようなクラウドファウンドリーとして管理プラットフォームを含む、任意の分散環境でうまく動作します。
スプリングクラウドを迅速に(例えば、構成管理、サービス発見、回路遮断器、ルーティング、マイクロブローカー、制御バス、トークン、グローバルロック、分散セッションは、クラスタ状態のような)分散システムのいくつかの一般的なパターンを構築するためのツールを提供し、春クラウドを使用して開発あなたはすぐにこれらのパターンを実装するサービスやアプリケーションを停止することができます。彼らは、開発者自身のラップトップ、ベアメタルデータセンターや、クラウドファウンドリーなどのホスティングプラットフォームを含む、任意の分散環境でも実行することができます。
春の雲の公式サイトからの導入の最初の文は、春の雲はマイクロサービスアーキテクチャのシステムを形成するために一緒に、これらのツールを分散システムを構築するためのツールの範囲を提供し、レジストリ、ゲートウェイは、プロバイダ、消費者は、残りは、分散しますロック、分散セッションなど。
学習データ編集の春の雲:
http://www.ityouknow.com/springcloud/2016/12/30/springcloud-collect.html
https://blog.csdn.net/forezp/article/details/70148833
レジストリ
使用IDEAまで設定ビルドブロガーユーレカ登録センター
1まず、空のMavenプロジェクトを作成します
塗りつぶしパラメータ:
OK、それを終えます
仕上げsrcフォルダの後ディレクトリを削除
2.次に、新しいモジュールは、右の雲のルートディレクトリに、新しい「モジュールを選択します
春のブートプロジェクトを作成し、ユーレカ依存を追加
注コンテンツルートアドレス、cloudDemoディレクトリ内erueka
仕上げにクリックして、それがその後、プロジェクト構造、Mavenの初期化を待っているが完了すると、springbootプロジェクトを生成し、次のようにユーレカのPOMファイルは、次のとおりです。
スタートユーレカレジストリは、クラスspringbootのコメントで開始し、非常に簡単です
@EnableEurekaServer
そして、私たちの春のブート開始を設定します。
将resource下面的 application.properties文件改为application.yml文件并添加如下配置:
server: port: 8801 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
然后启动项目访问localhost:8801,看到这个界面,Eureka注册中心就已经启动成功,接下来我们可以编写一个提供者,一个消费者。
spring cloud的消费者也可以是提供者,二者只有逻辑上的区别,它是链式的存在。在spring boot中有两种消费方式:
1.rest+ribbon
2.Feign
接下来我们编写消费者
rest+ribbon消费
首先保持Eureka的启动不变,然后在cloudDemo下新建一个module 叫做ribbon,它也是spring boot结构:
注意我们要添加三个依赖,如上图红框依次选择即可。
一样,要注意content root的目录。
创建完成后,编写springboot的启动类,首先加上 @ComponentScan 注解,然后添加 @EnableDiscoveryClient 注册服务,然后注入RestTemplate对象,
@LoadBalanced 表示开启负载均衡
完整的代码如下:
@SpringBootApplication @EnableDiscoveryClient //注册服务 @ComponentScan public class RibbonApplication { public static void main(String[] args) { SpringApplication.run(RibbonApplication.class, args); } @Bean @Autowired @LoadBalanced RestTemplate restTemplate(){ return new RestTemplate(); } }
然后我们创建一个测试用的service文件:
代码如下:
@Service public class HelloService { public String sayHello(){ return "helloWorld"; // 提供一个hello World } }
然后我们再编写一个controller,提供一个hello的controller:
完整代码如下:
@RestController public class HelloController { @Autowired private HelloService helloService; @GetMapping("/hello") public String sayHello(String name){ return helloService.sayHello() + " " + name; } }
然后我们再配置application.yml , 一样的 将配置文件改为yml格式,然后输入配置:
eureka: client: serviceUrl: defaultZone: http://localhost:8801/eureka/ server: port: 8802 spring: application: name: ribbon-provider
之后启动服务,启动后访问 localhost:8802/hello?name=zhangtaifeng :
测试完成,这个服务我们用他做服务提供者(provider),然后我们再重新建一个module,可以叫做 ribbon-consumer,整体配置一致,我们只需要修改service和controller部分(注意package):
然后修改配置文件为:
eureka: client: serviceUrl: defaultZone: http://localhost:8801/eureka/ server: port: 8803 spring: application: name: ribbon-consumer
改了端口和应用名称。
然后复制上面的spring boot入口文件代码,复制service和controller文件,依然 注意包名和路径,然后修改HelloService:
我们启动应用看看:
RestTemplate成功调用了8802端口上的provider。
到了这里,相信大家对spring cloud调用服务有了一定的了解,cloud通过rest调用服务进行服务间的通信,每一个controller的方法对外提供对应的服务接口。相比较dubbo的rpc调用有一些不一样的优势,同时它的开发方式更简单,配合zuul网关的使用能够达到更好的效果。
Feign消费
feign消费是通过注解的方式进行的消费模式,它默认打开了负载均衡,还是在cloudDemo下创建一个module,名字叫feign:
注意引用的包。
创建完成,首先编写入口文件,主要是加上
@EnableDiscoveryClient
@EnableFeignClients
这两个注解,用于注册和发现服务。
然后我们在目录下新建一个service,controller,或者从前面的工程复制,另外需要新建一个rpc文件夹,然后在rpc下新建一个GetHello接口:
编写访问rpc的方法,使用feign调用更加简便,添加@FeignClient注解即可,value的意思就是目标服务器,可以直接用yml中配置的application名称,完整代码如下:
@FeignClient(value = "ribbon-consumer") public interface GetHello { @RequestMapping(value = "/hello?name=feign",method = RequestMethod.GET) public String sayHello(); }
然后再改造下service代码:
@Service public class HelloService { @Autowired private GetHello getHello; //注入rpc public String sayHello(){ return getHello.sayHello(); // 提供一个hello World } }
最后还是修改application.yml文件,配置大致相同,修改应用名和端口,代码如下:
eureka: client: serviceUrl: defaultZone: http://localhost:8801/eureka/ server: port: 8804 spring: application: name: feign-consumer
然后我们启动这个工程看看有什么效果,注意,这所有的步骤,前面的服务都没有关闭噢:
启动后效果如图。
小结
从这里看,spring cloud将我们的几个应用串联起来,各个服务之间互相通过restAPI调用,我觉得Feign要优于ribbon,另外Eureka注册中心也可以换成zookeeper或者consul.