[JAVA]架構問題探討1

1. 背景

Java 架構主要仍是從業務角度的架構,架構爲了支撐業務的發展,知足大型業務的需求html

2. Spring 架構,查看

2.1 總體架構

image

2.1.1 核心容器
  • Core : IoC 控制反轉,把對象的權利交給框架,或者是一些xml的對象配置
  • Beans : 是可複用的組件,扮演着應用程序素材的角色
  • Context : 繼承了Beans模塊特性,增長了國際化的支持,事件廣播,資源加載和建立上下文(如一個Servlet容器)
  • spring-expression : 表達式 ,如EL
2.1.2 AOP及Instrumentation
  • AOP : 面向切面編程,容許自定義,如方法的攔截器
  • Instrumentation : Spring類加載器
2.1.3 消息
  • Messaging :提供基於消息的基礎服務。包括一組消息映射方法的註解,相似於基於編程模型Spring MVC 註解
2.1.4 數據訪問/集成
  • Data Access : 由JDBC,ORM,OXM,JMS,和Transaction模塊組成
    • jdbc : JDBC代碼的封裝和使用
    • tx : 支持可編程和申明式事務管理,用於實現特殊的接口和全部的POJO
    • orm : 提供流行的對象關係映射,包括JPA, JDO, Hibernate,
    • oxm : 用於支持Object/XML mapping,支持對xml的相關操做
2.1.5 Web
  • Web : web,webmvc,websocket,webmvc-protlet
2.1.6 Test
  • test :組合Junit 或TestNG 框架進行單元測試和集成測試,提供了連續加載ApplicationContext而且緩存這些上下文
2.2

3. Spring Boot的架構,查看

Spring boot 設計的目的是用來簡化新的Srping 應用初始搭建已經開發過程。java

3.1 Spring 的總體架構

image

3.1.1 Spring 大的產品
  • Spring Boot:旨在簡化建立產品級的 Spring 應用和服務,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用微服務功能,能夠和spring cloud聯合部署。git

  • Spring Framework:即一般所說的spring 框架,是一個開源的Java/Java EE全功能棧應用程序框架,其它spring項目如spring boot也依賴於此框架。github

  • Spring Cloud:微服務工具包,爲開發者提供了在分佈式系統的配置管理、服務發現、斷路器、智能路由、微代理、控制總線等開發工具包。web

3.1.2 組合spring技術
  • Spring XD:是一種運行時環境(服務器軟件,非開發框架),組合spring技術,如spring batch、spring boot、spring data,採集大數據並處理。redis

  • Spring Data:是一個數據訪問及操做的工具包,封裝了不少種數據及數據庫的訪問相關技術,包括:jdbc、Redis、MongoDB、Neo4j等。spring

  • Spring Batch:批處理框架,或說是批量任務執行管理器,功能包括任務調度、日誌記錄/跟蹤等。數據庫

  • Spring Security:是一個可以爲基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。express

  • Spring Integration:面向企業應用集成(EAI/ESB)的編程框架,支持的通訊方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。編程

3.1.3 Spring Social 工具包
  • Spring Social:一組工具包,一組鏈接社交服務API,如Twitter、Facebook、LinkedIn、GitHub等,有幾十個。
3.1.4 Spring 經常使用組件
  • Spring AMQP:消息隊列操做的工具包,主要是封裝了RabbitMQ的操做。

  • Spring HATEOAS:是一個用於支持實現超文本驅動的 REST Web 服務的開發庫。

  • Spring Web Flow:目標是成爲管理Web應用頁面流程的最佳方案,將頁面跳轉流程單獨管理,並可配置。

  • Spring LDAP:是一個用於操做LDAP的Java工具包,基於Spring的JdbcTemplate模式,簡化LDAP訪問。

  • Spring Session:session管理的開發工具包,讓你能夠把session保存到redis等,進行集羣化session管理。

  • Spring Web Services:是基於Spring的Web服務框架,提供SOAP服務開發,容許經過多種方式建立Web服務。

3.1.5 Spring 輔助工具
  • Spring Shell:提供交互式的Shell可以讓你使用簡單的基於Spring的編程模型來開發命令,好比Spring Roo命令。

  • Spring Roo:是一種Spring開發的輔助工具,使用命令行操做來生成自動化項目,操做很是相似於Rails。

  • Spring Scala:爲Scala語言編程提供的spring框架的封裝(新的編程語言,Java平臺的Scala於2003年末/2004年初發布)。

  • Spring BlazeDS Integration:一個開發RIA工具包,能夠集成Adobe Flex、BlazeDS、Spring以及Java技術建立RIA。

  • Spring Loaded:用於實現java程序和web應用的熱部署的開源工具。

  • Spring REST Shell:能夠調用Rest服務的命令行工具,敲命令行操做Rest服務。

3.2 spring boot的機制
  • Spring 總體機制,解決多應用/模塊的問題,並採用spring 公共組件來解決問題

包括存儲系統,分佈式緩存,消息系統

  • Spring boot XD 數據的處理
3.3 開發微服務
  • 提供了模塊化方式導入依賴的能力,強調了開發RESTful Web服務的功能並提供了生成可運行jar的能力,這一切都清晰地代表在開發可部署的微服務方面Boot框架是一個強大的工具。
  • 在企業級基礎設施領域,微服務是一種愈來愈流行的應用架構,由於它可以實現快速開發、更小的代碼庫、企業級集成以及模塊化部署。
3.4 數據訪問
  • Spring Boot使數據庫集成變成了一項很是簡單的任務,由於它具備自動配置Spring Data以訪問數據庫的能力。只需在你的工程中將spring-boot-starter-data-jpa包含進來

4. Spring Cloud的架構

5. Dubbo的架構

5.1 Dubbo 解決分佈式的機制就是採用,註冊和消費的方式

image

5.2 Dubbo架構設計詳解,查看

image

8. 項目的實踐

8.1 spring boot admin ,查看

能夠在hazelcast管理多個應用的配置。

9. 遇到的問題

9.1 解決項目的單元測試問題
  • 解決單元測試目錄的識別問題

把test的根目錄->「Mark Directory as 」 -> Test Source root

  • 解決單元測試的代碼自動產生的問題,安裝插件:「junitgenerater v2.0」
  • 解決產生的代碼的目錄問題。把單元測試的目錄放到test的目錄下。
${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME}
複製代碼
9.2 安裝spring-boot-admin 報錯
  • build error while installing yarn, 查看
You need to install yarn on your machine for building the UI
在Mac上安裝比較方便,使用初始化腳本便可

## 執行yarn安裝的腳本就能夠
curl -o- -L https://yarnpkg.com/install.sh | bash
複製代碼
相關文章
相關標籤/搜索