整體架構
這個圖適合中小公司。麻雀雖小 五臟俱全。微服務架構所需要做的事在這個圖里基本都有了。
綠色的不講,主要講的是這三塊(橘黃色的)。后面的和運維相關,會講,不會講的太深
訂單服務
首先來寫一個訂單服務
從user的項目 復制依賴到order里面
復制過來了
增加starter-web的依賴
創建包
SpringBoot的啟動類也復制過來,改個名字叫做OrderApi
新建order包
創建OrderInfo
新建OrderController
寫一個創建訂單的方法
創建價格服務
用來查詢商品價格
這兩個服務可以互相調用
依賴復制一下
創建包
SpringBoot啟動類復制過來,改個名字PriceApi
創建price的包
創建priceController
創建要返回的類 PriceInfo
創建返回商品價格的信息的方法
PriceInfo加上屬性。
order的服務加上依賴。
price的服務加上依賴。
這樣加上@Data注解就不會報錯了
這樣就有了set方法
創建訂單調用價格服務
因為沒有搭建注冊中心,所以也不把RestTemplate聲明成Spring的Bean的形式了。主要講安全,服務的注冊發現和負載均衡就不在這里講了。直接就去調對面的服務。
商品id通過訂單的信息傳遞過來。訂單的實體里面添加一個屬性就是為這個商品下一個訂單。訂單的id
這樣就把訂單的id傳遞過來。
服務返回的是PriceInfo
直接把PriceInfo這個類復制一個到了Order的服務下。這里就是重復的代碼
微服務架構下最重要的是解耦。解耦的重要性遠遠大於有些代碼重復的重要性的。
如果想PriceInfo不重復。那么一定要提煉出一個公用的jar包來。比如說叫什么common core
這樣order和price服務都添加那個公用的jar包引用。表面上看是消除了一些重復的代碼。但是增加了耦合性。因為這兩個服務都要依賴同一個扎包
那么這一個jar包有變化,實際上影響你兩個系統。在微服務的環境下解耦,降低互相依賴的重要性比節省幾行代碼的重要性要高很多。所以這里面臨這種情況就直接復制代碼。兩邊各自改自己的PriceInfo 互不影響。
以上就寫了一個價格服務一個訂單的服務,然后在訂單服務里面去查了一下傳進來的商品id的價格。
在PriceController里面
服務修改端口
因為要同時啟動兩個應用,所以要指定不同的端口
創建pplication.yml配置文件。
server.port
從order服務復制一個到price的服務
啟動服務測試
啟動orderApi
啟動PriceApi
這里端口改成9060
說明我調用價格服務調用成功了。
就做這么個簡單場景,下單然后價格服務 查一下價格
結束