工做總結

1、微服務概念

http://www.importnew.com/17588.htmlhtml

什麼是微服務(概念)java

         單體->SOA->微服務web

一、單體

單體->一個WAR包算法

        

優先:數據庫

開發簡單直接,集中式管理api

基本不會重複開發緩存

功能都在本地,沒有分佈式管理的開銷和調用通訊開銷安全

缺點:服務器

開發效率低:全部開發都在一個項目上改代碼,代碼衝突websocket

代碼維護難:代碼功能很容易耦合在一塊兒,新人不知從何下手

部署不靈活:構建不靈活,必須從新構建整個項目,時間長

穩定性不高:一個小問題可能搞掛整改應用

擴展性不夠:沒法知足高併發,新增功能必須從新構建、部署整改應用

二、SOA

沒有去中心化,基於模塊化的應用拆分,應用的交互依賴服務總線、

中間件服務器好比數據庫、ETCD等獨立的中間件進程爲集羣式部署、且服務端的信息相互共享不隔離。

 

三、微服務

真正分佈式的,去中心化的SOA,服務之間的不實例相互隔離,好比ETCD、數據庫實例是相互隔離的。把服務內的邏輯封裝在本身內部,把路由、消息解析放在服務內部,服務間輕量級通訊(HTTP、跨進程的Global RPC)。

簡單來講,微服務的目的是有效拆分應用,實現敏捷開發和部署。

 

 

1. 一些列的獨立的服務共同組成系統
2. 單獨部署,跑在本身的進程裏
3. 每一個服務爲獨立的業務開發
4. 分佈式的管理

 

四、怎麼實踐微服務

1)如何訪問這麼多拆分的微服務?

APIGateway:

提供統一的服務入口,讓服務對前臺透明

聚合後臺的服務,節省流量,提高性能

提供安全、過濾、流控等管理功能

 

2)服務之間如何通訊?

同步調用(REST、RPC),咱們如今REST也支持異步調用。實現簡單、兼容性好

異步消息調用(Kafka,RMQ),消息有緩存、通訊上來講存在弱一致

 

3)服務怎麼找?

註冊中心(etcd或者zk作服務信息的分佈式管理),服務可在本地作緩存,服務變動通知客戶端。

提供尋址算法(負載均衡)

客戶端作:架構簡單,擴展靈活,只對註冊中心依賴。大公司

服務端作:優化是簡單,全部服務對於前臺調用方透明。小公司。

 

4)這麼多服務,掛了怎麼辦?

雪崩、調用鏈太長一個掛了 致使服務整個調用鏈不可用。

手段:

重試機制

限流

熔斷機制

負載均衡

降級(本地緩存)

 

5)微服務須要考慮的問題

API Gateway

服務間調用

服務發現

服務容錯

服務部署

數據調用

 

優缺點:

優勢

    開發簡單

    技術棧靈活

    服務獨立無依賴

    獨立按需擴展

    可用性高

缺點

    多服務運維難度

    系統部署依賴

    服務間通訊成本

    數據一致性

    系統集成測試

    重複工做

    性能監控

 

6)咱們的架構和應用

提供最精簡的karaf容器底座

提供微服務打包的開發模板

提供微服務的restful通訊開發模板

提供進程間通訊(restful、rpc)的調用框架

2、微服務進程間通訊

服務自動發現,註冊,上下線更新

關聯技術:websocket

 

服務性能(本地緩存優化)

1)註冊時創建服務的依賴關係,以及class訪問時與path的對應關係,path與實例的映射,實例自動緩存在本地,這樣class訪問時自動映射到實例地址

2)服務實例變動通知,採用disruptor框架將消息廣播出去,便於其餘業務獲取服務信息

關聯技術:緩存方式設計、disruptor框架

 

服務路由的負載均衡

用戶自由擴展路由策略

         關聯技術:反射

服務可靠性

註冊中心容錯、服務的容錯熔斷

服務間通訊

1)流程:

Swagger生成開發模板->

請求方式從restful調用轉換爲API調用->

反射獲取服務的API實例->

框架將API註解掃描,並解析出註解上的Path加入本地緩存->

調用API的方法,找到請求的方法對應的Path->

而後經過path和class信息找到實例地址->

而後調用轉換爲HTTP請求發送過去。

關聯技術:反射

 

2)通訊方式(REST、RPC)

         關聯技術:同步REST、異步REST(jetty client、jetty server

        

         3)序列化反序列化

         關聯技術:fastxml.jackson 不一樣序列化框架的性能對比,工做原理,爲何快?

        

最終一致性

事件通知型(可靠事件通知型(同步事件、異步事件)、最大努力通知模式)

補償型(TCC模式、業務補償)

 

3、Jetty

Jetty架構

Jetty的原理

Jetty熱加載等其餘特性

關聯技術:java NIO機制、HTTP1.1/HTTP2協議、servlet機制

 

4、Jersey

原理

序列化反序列化

關聯技術:servlet機制、javax-ws-rs協議、反射、序列化框架

5、WebApp統一鑑權框架

註冊原理

優化

Servlet規範和原理

關聯技術:servlet機制、osgi機制、jetty api使用

6、性能數據上報

上報流程

上報優化(報文合併分批上報)

關聯技術:kafka、優化思路

 

7、大容量——restful異步、HTTP2

Jetty httpclient 異步

Jetty server 異步

Jersey異步

Jetty對HTTP2協議實現

相關文章
相關標籤/搜索