1. 程式人生 > >微服務詳解(五):實現微服務

微服務詳解(五):實現微服務

利用Spring Boot來實現領域驅動設計概念並將它們從核心Java轉換為預計Spring框架的模型;

利用Spring Clouded,它提供了一個雲就緒的解決方案。Spring Cloud也是用Spring Boot,它允許你使用嵌入式應用程式容器,這依靠你的服務內的Tomcat或者Jetty,被打包為一個JAR檔案或者WAR檔案。這個JAR作為一個單獨的程序執行,也就是將所有請求提供服務和響應,並指向此服務中定義的端點的一個微服務;

Spring Cloud也可以方便的和Netfix Eureka整合,這是一種服務註冊和發現元件。

1.OTRS概述

基於微服務的原則,我們需要為每個可以獨立執行的功能都建立單獨的微服務。

2.開發和實現微服務

關鍵的工件:

  1. 實體:

這些都是可以識別並保持產品或者服務的狀態不變的物件的類別。這些物件不是由它們的屬性定義,而是由它們的身份和執行緒的連續性定義;

值物件(VO):只有屬性且沒有概念上的身份。最佳的做法是把值物件保持為不可變的物件,在Spring框架中,實體是純Pojo,因此我們可以把他們作為VO來使用;

  1. 服務:

服務物件不具有內部的狀態,它的唯一目的就是對領域的行為。

服務物件提供不能與特定實體或者值物件相關聯的行為。

  1. 儲存庫物件:

儲存庫物件是領域模型的一部分,它與儲存區,如資料庫、外部來源等互動,以獲取持久化的物件。當儲存庫收到某個物件引用的請求的時候,它返回現有的物件的引用,如果儲存庫黃總不存在所請求的物件,那麼他從儲存區中獲取此物件;

1.餐館微服務

控制器類

@RestController

  1. API版本控制:管理API版本的方法很多,其中一種是在路徑中使用版本,還有一種方法是使用HTTP頭。HTTP標頭可以是表示呼叫的API版本的自定義請求標頭或者Accept標頭;

服務類

使用@Service

儲存庫類

使用@Repository

實體類

2.預定和使用者服務

3.註冊和發現服務(Eureka服務)

Spring Clouded提供了對Netflix Eureka最先進的支援,這是一種服務註冊和發現工具。

所有由你執行的服務都被Eureka服務列出和發現,這是從你的服務專案內的Eureka客戶端Spring配置中讀取的;

需要在Maven中新增依賴:

spring-cloud-starter-eureka-server

啟動類App將只使用@EnableEurekaApplication類註解來無縫的執行Eureka服務;

@EnableEurekaServer

Spring的配置:

Eureka服務也需要下列Spring配置資訊用於Eureka伺服器配置

類似於Eureka,每個服務還應該包含Eureka客戶端的配置,以便可以建立Eureka伺服器和客戶端之間的連線,沒有這一點,是不可能註冊和發現服務的;

4.執行

從服務的主目錄執行以下命令:

java -jar target/<server_jar_file>

5.測試

在pom.xml中新增以下依賴:

spring-boot-starter-test

相關推薦

服務實現服務

利用Spring Boot來實現領域驅動設計概念並將它們從核心Java轉換為預計Spring框架的模型; 利用Spring Clouded,它提供了一個雲就緒的解決方案。Spring Cloud也是用Spring Boot,它允許你使用嵌

服務部署與測試

獨立部署和使用諸如Docker的容器來部署微服務,使用Docker將專案部署到AWS上。 可以利用Docker或者任何其他容器,可以簡化部署; 1.使用Netflix OSS的微服務架構概述 Netflix是微服務架構中的先鋒,通過他

Zookeeper通過JMX查看Zookeeper信息

JMXJMX是對運行中的JAVA系統進行管控。目前ZK使用標準的JMX接口。修改ZK的啟動腳本zkServer.sh這個啟動腳本進行修改,第一句不是必須的,但是第二句是必須的在conf目錄下新建java.env文件重新啟動為什麽要在conf裏面建立一個java.env呢?其實你都寫在zkServer.sh中也

安卓專案實戰之強大的網路請求框架okGo使用擴充套件專案okRx,完美結合RxJava

前言 在第一篇講解okGo框架新增依賴支援時,還記得我們額外新增的兩個依賴嗎,一個okRx和一個okServer,這兩個均是基於okGo框架的擴充套件專案,其中okRx可以使請求結合RxJava一起使用,而okServer則提供了強大的下載上傳功能,如斷點支援,多工管理等,本篇我們主要講

【linux】Valgrind工具集命令列

一、使用方法 usage: valgrind [options] prog-and-args 使用方法:valgrind [引數選項] 程式和引數 二、選擇工具 tool-selection option, with default in [ ]: 工具選擇選項,預設值在[]

Tkinter 元件Frame

Tkinter 元件詳解之Frame Frame(框架)元件是在螢幕上的一個矩形區域。Frame 主要是作為其他元件的框架基礎,或為其他元件提供間距填充。 何時使用 Frame 元件? Frame 元件主要用於在複雜的佈局中將其他元件分組,也用於填充間距和作為實現高階元件的基類。

HTTPHTTP POST方法傳輸多種型別的資料

上圖中主要就是上傳excel時的請求頭,我們重點看一下Content-Type,可以看出Content-Type=multipart/form-data; boundary=---------------------------3618134789,其中將Content_Type設定成multipart/fo

安卓專案實戰之強大的網路請求框架okGo使用實現get,post基本網路請求,下載上傳進度監聽以及對Callback自定義的深入理解

1.新增依賴 //必須使用 compile 'com.lzy.net:okgo:3.0.4' //以下三個選擇新增,okrx和okrx2不能同時使用,一般選擇新增最新的rx2支援即可 compile 'com.lzy.net:okrx:1.0.2' compile 'com.lzy

.Net Core 商城服務專案系列使用Polly處理服務錯誤

專案進行微服務化之後,隨之而來的問題就是服務呼叫過程中發生錯誤、超時等問題的時候我們該怎麼處理,比如因為網路的瞬時問題導致服務超時,這在我本人所在公司的專案裡是很常見的問題,當發生請求超時問題的時候,我們希望能夠自動重試,或者是在發生服務錯誤時採取一定的策略,比如限流熔斷等等。 本篇將會使用Polly處理服

iptables2四表

關於iptables中“四表五鏈”,我們今天來好好嘮嘮: 1、表的概念:   我們把具有相同功能的規則的集合叫做"表",所以說,不同功能的規則,我們可以放置在不同的表中進行管理,而iptables已經為我們定義了4種表,每種表對應了不同的功能,而我們定義的規則也都逃脫不了這4種功能的範圍,所以,學習ipt

SpringBoot+zk+dubbo架構實踐搭建服務電商架構內附GitHub地址

往期回顧前言我們的sb+zk+dubbo微服務架構實踐就要完結了。最後完成2件事情。 1、Spring boot + zk + dubbo 整合 mybatis 和 swagger 2、實現登入使用者的 增刪改查業務,附帶一個pagehelpe實現的分頁查詢功能。 目的是

Choerodon 的服務之路服務的“健康保障”

開發十年,就只剩下這套架構體系了! >>>   

elastic-job數據分片

count 任務 不同的 應該 center shc 偶數 int ext 數據分片的目的在於把一個任務分散到不同的機器上運行,既可以解決單機計算能力上限的問題,也能降低部分任務失敗對整體系統的影響。elastic-job並不直接提供數據處理的功能,框架只會將分片項分配至各

elastic-jobJob的手動觸發功能

方法 idt image blog per tle cnblogs ack display elastic-job的任務都是使用quartz來觸發的,quartz表達式一般都是定期執行。但有時候一些周期較長的任務,比如一天一次,幾小時一次的任務,我們需要等待很久才能觸發一次

elastic-job失效轉移

shard out utm monit 設置 borde 點滴 title 等於 elastic-job中最關鍵的特性之一就是失效轉移。配置了失效轉移之後,如果在任務執行過程中有一個執行實例掛了,那麽之前被分配到這個實例的任務(或者分片)會在下次任務執行之前被重新分配到其他

SpringMVC------參數綁定

@override 占用 通過 問題 顯示 led prop -s 意義   參數綁定,簡單來說就是客戶端發送請求,而請求中包含一些數據,那麽這些數據怎麽到達 Controller ?這在實際項目開發中也是用到的最多的,那麽 SpringMVC 的參數綁定是怎麽實現的呢?下

Spring------AOP

利用 未來 bject ted r.java -c cti throw 位置   這章我們接著講 Spring 的核心概念---AOP,這也是 Spring 框架中最為核心的一個概念。   PS:本篇博客源碼下載鏈接:http://pan.baidu.com/s/1skZ

自定義控件drawText()

字體 相對 awt 除了 4條 nbsp pan ase span 比較基礎的一個方法。即繪制文本 使用如下: Paint paint = new Paint(); paint.setColor(Color.RED); // 紅色字體 paint.setS

Zookeeper分布式與Zookeeper

zookeeper介紹 分布式 保留本文出自 “小惡魔的家” 博客,請務必保留此出處http://littledevil.blog.51cto.com/9445436/1983260Zookeeper詳解(一):分布式與Zookeeper

ZookeeperZookeeper安裝

zookeeper安裝安裝環境:CentOS 7 內存1GBJDK版本:1.8.0_112為JDK配置如下環境變量:編輯/etc/profile.d/jdk.sh#!/bin/bash JAVA_HOME=/usr/local/jdk1.8.0_112 export PATH=$JAVA_HOME/bi