-
1 # 使用者5304602087739
-
2 # 寫程式設計師的程式碼
1、java微服務其實是在rpc基礎上發展而來,相對於rpc粒度更細。比如使用者許可權系統,以前可能都在一個專案,現在可以拆分成使用者登入系統和使用者許可權兩個系統。 2、現在公司中用的最廣泛的就是springboot+springcloud微服務,spingboot得益於約定大於配置,無需手動寫xml配置及透過resultful風格進行api傳輸而流行springcloud是以springboot為基礎。 3、springcloud五大核心,eureka,zuul,ribbon,hystrix,config。 4、更詳細的可以關注我,我會不定期釋出微服務影片。
-
3 # 科技小樹
你這個問題,應該拆分成兩個問題。
第一,什麼是微服務?
第二,如何實現微服務?
下面從這兩各方面來來解答你的問題。
第一,什麼是微服務?微服務最初是由Martin Fowler提出來的他的理解如下:
微服務架構就是將單一程式開發成一個微服務,每個微服務執行在自己的程序中,並使用輕量級的機制通訊,通常是HTTP RESTFUL API。這些服務圍繞業務能力來劃分,並透過自動化部署機制來獨立部署。這些服務可以使用不同的程式語言,不同資料庫,以保證最低限度的集中式管理。
總結起來微服務就是將一個單體架構的應用按業務劃分為一個個的獨立執行的程式即服務,它們之間透過HTTP協議進行通訊(也可以採用訊息佇列來通訊,如RoocketMQ,Kafaka等),可以採用不同的程式語言,使用不同的儲存技術,自動化部署(如Jenkins)減少人為控制,降低出錯機率。
-
4 # 日月科健
以下是國內比較火的5款Java微服務開源專案,祝你面試成功。
1.pig
開源地址:https://gitee.com/log4j/pig
基於Spring Cloud、OAuth2.0、Vue的前後端分離的系統。 通用RBAC許可權設計及其資料許可權和分庫分表 支援服務限流、動態路由、灰度釋出、 支援常見登入方式, 多系統SSO登入, 提供配套影片開發教程
功能列表:
完善登入:賬號密碼模式、簡訊驗證碼模式、社交賬號模式均整合Spring security oAuth
單點登入:基於Srping security oAuth 提供單點登入介面,方便其他系統對接
使用者管理:使用者是系統操作者,該功能主要完成系統使用者配置。
機構管理:配置系統組織機構,樹結構展現,可隨意調整上下級。
角色管理:角色選單許可權分配、設定角色按機構進行資料範圍許可權劃分。
動態路由:基於zuul實現動態路由,後端可配置化。
灰度釋出:自定義ribbon路由規則匹配多版本請求。
終端管理:動態配置oauth終端,後端可配置化。
字典管理:對系統中經常使用的一些較為固定的資料進行維護,如:是否等。
操作日誌:系統正常操作日誌記錄和查詢;系統異常資訊日誌記錄和查詢。
服務限流:多種維度的流量控制(服務、IP、使用者等)
訊息匯流排:配置動態實時重新整理
分庫分表:shardingdbc分庫分表策略
資料許可權: 使用mybatis對原查詢做增強,業務程式碼不用控制,即可實現。
檔案系統: 支援FastDFS、七牛雲,擴充套件API幾行程式碼實現上傳下載
訊息中心:簡訊、郵件模板傳送,幾行程式碼實現傳送
聚合文件:基於zuul實現 swagger各個模組的實現
程式碼生成:前後端程式碼的生成,支援Vue
快取管理:基於Cache Cloud 保證Redis 的高可用
服務監控: Spring Boot Admin
分散式任務排程: 基於elastic-job的分散式任務,zookeeper做排程中心
zipkin鏈路追蹤: 資料儲存ELK,圖形化展示
pinpoint鏈路追蹤: 資料儲存hbase,圖形化展示
2.zheng
開源地址:https://gitee.com/shuzheng/zheng
基於Spring+SpringMVC+Mybatis分散式敏捷開發系統架構,提供整套公共微服務服務模組:集中許可權管理(單點登入)、內容管理、支付中心、使用者管理(支援第三方登入)、微信平臺、儲存系統、配置中心、日誌分析、任務和通知等,支援服務治理、監控和追蹤,努力為中小型企業打造全方位J2EE企業級開發解決方案。
3.Cloud-Platform
開源地址:https://gitee.com/minull/ace-securityCloud-Platform是國內首個基於Spring Cloud微服務化開發平臺,核心技術採用Spring Boot2以及Spring Cloud Gateway相關核心元件,前端採用vue-element-admin元件。具有統一授權、認證後臺管理系統,其中包含具備使用者管理、資源許可權管理、閘道器API管理等多個模組,支援多業務系統並行開發,可以作為後端服務的開發腳手架。程式碼簡潔,架構清晰,適合學習和直接專案中使用。
架構摘要服務鑑權透過JWT的方式來加強服務之間排程的許可權驗證,保證內部服務的安全性。
監控利用Spring Boot Admin 來監控各個獨立Service的執行狀態;利用Hystrix Dashboard來實時檢視介面的執行狀態和呼叫頻率等。
負載均衡將服務保留的rest進行代理和閘道器控制,除了平常經常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以幫我們進行正常的閘道器管控和負載均衡。其中擴充套件和借鑑國外專案的擴充套件基於JWT的Zuul限流外掛,方面進行限流。
服務註冊與呼叫基於Consul來實現的服務註冊與呼叫,在Spring Cloud中使用Feign, 我們可以做到使用HTTP請求遠端服務時能與呼叫本地方法一樣的編碼體驗,開發者完全感知不到這是遠端方法,更感知不到這是個HTTP請求。
熔斷機制因為採取了服務的分佈,為了避免服務之間的呼叫“雪崩”,採用了Hystrix的作為熔斷器,避免了服務之間的“雪崩”。
4.SpringBlade
開源地址:https://gitee.com/smallc/SpringBladeSpringBlade 2.0 是一個基於 Spring Boot 2 Spring Cloud Finchley Mybatis 等核心技術,用於快速構建中大型系統的基礎框架。
主要特性變化
採用前後端分離的模式,前端單獨開源出一個框架:Sword,主要選型技術為React、Ant Design、Umi、Dva
後端採用SpringCloud全家桶,並同時對其基礎元件做了高度的封裝,單獨開源出一個框架:Blade-Tool
Blade-Tool已推送至Maven中央庫,直接引入即可,減少了工程的臃腫,也可更注重於業務開發
註冊中心選型Consul
部署使用Docker或K8s + Jenkins
使用Traefik進行反向代理
踩了踩Kong的坑,有個基本的使用方案,但不深入,因為涉及到OpenResty。
封裝了簡單的Secure模組,採用JWT做Token認證,可拓展整合Redis等細顆粒度控制方案
在2.0誕生之前,已經穩定生產了近一年,經歷了從Camden - Finchley的技術架構,也經歷了從fat jar - docker - k8s + jenkins的部署架構
專案分包明確,規範微服務的開發模式,使包與包之間的分工清晰。
5.Guns
開源地址:https://gitee.com/stylefeng/gunsGuns基於Spring Boot 2,致力於做更簡潔的後臺管理系統,完美整合springmvc + shiro + mybatis-plus + beetl,Guns專案程式碼簡潔,註釋豐富,上手容易,同時Guns包含許多基礎模組(使用者管理,角色管理,部門管理,字典管理等10個模組),可以直接作為一個後臺管理系統的腳手架!同時提供spring cloud版本!
Guns微服務版本
Guns的核心是roses-kernel專案https://gitee.com/stylefeng-Roses/roses-kernel,提供對spring cloud的支援。
Roses框架基於Spring Boot 2和Spring Cloud Finchley.RELEASE,整合Eureka + Hystrix + Ribbon + Feign + Zuul,更符合企業級的分散式和服務化解決方案,Roses擁有高效率的開發體驗,提供可靠訊息最終一致性分散式事務解決方案,提供基於呼叫鏈的服務治理,提供可靠的服務異常定位方案(Log + Trace)等等,一個分散式框架不僅需要構建高效穩定的底層開發框架,更需要解決分散式帶來的種種挑戰!
管理系統功能
1.使用者管理 2.角色管理 3.部門管理 4.選單管理 5.字典管理 6.業務日誌 7.登入日誌 8.監控管理 9.通知管理 10.程式碼生成(旗艦版目前還沒完成)
專案特點
基於SpringBoot,簡化了大量專案配置和maven依賴,讓您更專注於業務開發,獨特的分包方式,程式碼多而不亂。
完善的日誌記錄體系,可記錄登入日誌,業務操作日誌(可記錄操作前和操作後的資料),異常日誌到資料庫,透過@BussinessLog註解和LogObjectHolder.me().set()方法,業務操作日誌可具體記錄哪個使用者,執行了哪些業務,修改了哪些資料,並且日誌記錄為非同步執行,詳情請見@BussinessLog註解和LogObjectHolder,LogManager,LogAop類。
利用beetl模板引擎對前臺頁面進行封裝和拆分,使臃腫的html程式碼變得簡潔,更加易維護。
對常用js外掛進行二次封裝,使js程式碼變得簡潔,更加易維護,具體請見webapp/static/js/common資料夾內js程式碼。
利用ehcache框架對經常呼叫的查詢進行快取,提升執行速度,具體請見ConstantFactory類中@Cacheable標記的方法。
controller層採用map + warpper方式的返回結果,返回給前端更為靈活的資料,具體參見com.stylefeng.guns.modular.system.warpper包中具體類。
防止XSS攻擊,透過XssFilter類對所有的輸入的非法字串進行過濾以及替換。
簡單可用的程式碼生成體系,透過SimpleTemplateEngine可生成帶有主頁跳轉和增刪改查的通用控制器、html頁面以及相關的js,還可以生成Service和Dao,並且這些生成項都為可選的,透過ContextConfig下的一些列xxxSwitch開關,可靈活控制生成模板程式碼,讓您把時間放在真正的業務上。
控制器層統一的異常攔截機制,利用@ControllerAdvice統一對異常攔截,具體見com.stylefeng.guns.core.aop.GlobalExceptionHandler類。
頁面統一的js key-value單例模式寫法,每個頁面生成一個唯一的全域性變數,提高js的利用效率,並且有效防止多個人員開發引起的函式名/類名衝突,並且可以更好地去維護程式碼。
業務日誌記錄
日誌記錄採用aop(LogAop類)方式對所有包含@BussinessLog註解的方法進行aop切入,會記錄下當前使用者執行了哪些操作(即@BussinessLog value屬性的內容),如果涉及到資料修改,會取當前http請求的所有requestParameters與LogObjectHolder類中快取的Object物件的所有欄位作比較(所以在編輯之前的獲取詳情介面中需要快取被修改物件之前的欄位資訊),日誌內容會非同步存入資料庫中(透過ScheduledThreadPoolExecutor類)。
-
5 # 小石橋衚衕
微服務是個很廣的概念,涉及的東西也很多,我覺得對於一個java從業者,可以學習幾個框架,spring cloud和dubbo,這是使用最多的兩個,我看問答回覆的基本也是基於這兩個封裝的
-
6 # ApiCDK
天翎工作流系統是一套提供給整合商、軟體開發商和最終客戶的基礎平臺軟體,它以流程管理和流程應用為核心,透過配置及二次開發,實現流程的自動化處理。
透過天翎工作流產品實現管理流程自動化,使業務流程基於工作流引擎高效、規範、自動流轉,提高工作效率和工作質量,利用工作流產品將重複、有規則的事件轉換系統自動處理
回覆列表
簡而言之,微服務架構風格是一種將單個應用程式作為一套小型服務開發的方法,每種應用程式都在自己的程序中執行,並與輕量級機制(通常是HTTP資源API)進行通訊。得益於以 Docker 為代表的容器化技術的成熟以及 DevOps 文化的的興起,服務化的思想進一步演化,演變成我們今天所熟知的微服務。
說了這麼多概念,微服務的特點:
服務拆分粒度更細
服務獨立部署
服務獨立維護,分工明確