主頁 > 軟體設計 > Spring Cloud 入門篇

Spring Cloud 入門篇

2021-01-30 14:45:57 軟體設計

第一章 微服務架構演進

1.1、單體架構

架構說明:

? 全部功能集中在一個專案內(All in one),

架構優點:

? 架構簡單,前期開發成本低、開發周期短,適合小型專案,

架構缺點:

? 全部功能集成在一個工程中,對于大型專案不易開發、擴展和維護,

? 技術堆疊受限,只能使用一種語言開發,

? 系統性能擴展只能通過擴展集群節點,成本高,

1.2、垂直架構

18

架構說明:

? 按照業務進行切割,形成小的單體專案,

架構優點:

? 技術堆疊可擴展(不同的系統可以用不同的編程語言撰寫),

架構缺點:

? 功能集中在一個專案中,不利于開發、擴展、維護,

? 系統擴張只能通過集群的方式,

? 專案之間功能冗余、資料冗余、耦合性強,

1.3、SOA架構

架構說明:

? SOA全稱為Service-Oriented Architecture,即面向服務的架構,它可以根據需求通過網路對松散耦合的粗粒度應用組件(服務)進行分布式部署、組合和使用,一個服務通常以獨立的形式存在于作業系統行程中,站在功能的角度,把業務邏輯抽象成可復用的服務,通過服務的編排實作業務的快速再生,目的:把原先固有的業務功能轉變為通用的業務服務,實作業務邏輯的快速復用,

? 將重復功能或模塊抽取成組件的形式,對外提供服務,在專案與服務之間使用ESB(企業服務總線)的形式作為通信的橋梁,

架構優點:

? 重復功能或模塊抽取為服務,提高開發效率,

? 可重用性高,

? 可維護性高,

架構缺點:

? 各系統之間業務不同,很難確認功能或模塊是重復的,

? 抽取服務的粒度大,

? 系統和服務之間耦合度高,

1.4、微服務架構

架構說明:

? 微服務就是將一個單體架構的應用按業務劃分為一個個的獨立運行的程式即服務,它們之間通過 HTTP 協議進行通信,也可以采用訊息佇列來通信,例如 RabbitMQ,Kafaka 等,可以采用不同的編程語言,使用不同的存盤技術,自動化部署(如 Jenkins)減少人為控制,降低出錯概率,服務數量越多,管理起來越復雜,因此采用集中化管理,例如 Eureka,Zookeeper 等都是比較常見的服務集中化管理框架,

? 微服務是一種架構風格,一個大型的復雜軟體應用,由一個或多個微服務組成,系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的,每個微服務僅關注于完成一件任務并很好的完成該任務,

架構優點:

? 服務拆分粒度更細,有利于提高開發效率,

? 可以針對不同服務制定對應的優化方案,

? 適用于互聯網時代,產品迭代周期更短,

架構缺點:

? 粒度太細導致服務太多,維護成本高,

? 分布式系統開發的技術成本高,對團隊的挑戰大,

第二章 微服務設計原則

2.1、CAP 定理原則

CAP 原則又稱 CAP 定理,指的是在一個分布式系統中必須具有以下其中兩個特性:

  • Consistency (一致性)
  • Availability (可用性)
  • Partition tolerance(磁區容錯性)

CAP 由 Eric Brewer 在 2000 年 PODC 會議上提出,該猜想在提出兩年后被證明成立,成為我們熟知的 CAP 定理,CAP 三者不可兼得,

特性定理
Consistency也叫做資料原子性,系統在執行某項操作后仍然處于一致的狀態,在分布式系統中,更新操作執行成功后所有的用戶都應該讀到最新的值,這樣的系統被認為是具有強一致性的,等同于所有節點訪問同一份最新的資料副本,
Availability每一個操作總是能夠在一定的時間內回傳結果,這里需要注意的是"一定時間內"和"回傳結果",一定時間內指的是,在可以容忍的范圍內回傳結果,結果可以是成功或者是失敗,
Partition tolerance在網路磁區的情況下,被分隔的節點仍能正常對外提供服務(分布式集群,資料被分布存盤在不同的服務器上,無論什么情況,服務器都能正常被訪問),

CAP 三個特性只能滿足其中兩個,那么取舍的策略就共有三種:

  • CA without P:如果不要求P(不允許磁區),則C(強一致性)和A(可用性)是可以保證的,但放棄 P 的同時也就意味著放棄了系統的擴展性,也就是分布式節點受限,沒辦法部署子節點,這是違背分布式系統設計的初衷的,
  • CP without A:如果不要求A(可用),相當于每個請求都需要在服務器之間保持強一致,而P(磁區)會導致同步時間無限延長(也就是等待資料同步完才能正常訪問服務),一旦發生網路故障或者訊息丟失等情況,就要犧牲用戶的體驗,等待所有資料全部一致了之后再讓用戶訪問系統,設計成 CP 的系統其實不少,最典型的就是分布式資料庫,如 Redis、HBase 等,對于這些分布式資料庫來說,資料的一致性是最基本的要求,因為如果連這個標準都達不到,那么直接采用關系型資料庫就好,沒必要再浪費資源來部署分布式資料庫,
  • AP without C:要高可用并允許磁區,則需放棄一致性,一旦磁區發生,節點之間可能會失去聯系,為了高可用,每個節點只能用本地資料提供服務,而這樣會導致全域資料的不一致性,典型的應用就如某米的搶購手機場景,可能前幾秒你瀏覽商品的時候頁面提示是有庫存的,當你選擇完商品準備下單的時候,系統提示你下單失敗,商品已售完,這其實就是先在 A(可用性)方面保證系統可以正常的服務,然后在資料的一致性方面做了些犧牲,雖然多少會影響一些用戶體驗,但也不至于造成用戶購物流程的嚴重阻塞,

2.2、AFK 拆分原則

? 業界對于可擴展的系統架構設計有一個樸素的理念,就是:通過加機器可以解決容量和可用性問題(如果一臺不行就兩臺,兩臺不行就多臺),

? 用個段子描述就是:世界上沒有什么事是一頓燒烤解決不了的,如果有,那就兩頓,

? 這一理念在“云計算”概念瘋狂流行的今天,得到了廣泛的認可,對于一個規模迅速增長的系統而言,容量和性能問題當然是首當其沖的,但是隨著時間的向前,系統規模的增長,除了面對性能與容量的問題外,還需要面對功能與模塊數量上增長帶來的系統復雜性問題,以及業務變化帶來的提供差異化服務問題,而許多系統在架構設計時并未充分考慮到這些問題,導致系統的重構成為常態,從而影響業務交付能力,還浪費人力財力,對此《The Art of Scalability》一書提出了一個更加系統的可擴展模型—AKF 可擴展立方,這個立方體中沿著三個坐標軸設定分別為 X,Y,Z,理論上按照這三個擴展模式,可以將一個單體系統,進行無限擴展,

  • X 軸:指的是水平復制,很好理解,就是講單體系統多運行幾個實體,成為集群加負載均衡的模式,
  • Y 軸:就是我們所說的微服務的拆分模式,就是基于不同的業務拆分,
  • Z 軸:是基于類似的資料磁區,比如一個互聯網打車應用突然火了,用戶量激增,集群模式撐不住了,那就按照用戶請求的地區進行資料磁區,北京、上海、四川等多建幾個集群,

場景說明:比如打車應用,一個集群撐不住時,分了多個集群,后來用戶激增還是不夠用,經過分析發現是乘客和車主訪問量很大,就將打車應用拆成了三個,分別為乘客服務、車主服務、支付服務,三個服務的業務特點各不相同,獨立維護,各自都可以再次按需擴展,

2.3、前后端分離原則

  • 前后端技術分離,可以由各自的專家來對各自的領域進行優化,這樣前端的用戶體驗優化效果更好,
  • 前后端分離模式下,前后端互動界面更清晰,就剩下了介面模型,后端的介面簡潔明了,更容易維護,
  • 前端多渠道集成場景更容易實作,后端服務無需變更,采用統一的資料和模型,可以支持多個前端:例如:微信小程式、PC 前端、Android 前端、IOS 前端,

2.4、無狀態服務原則

? 對于無狀態服務,首先說一下什么是狀態:如果一個資料需要被多個服務共享,才能完成一筆交易,那么這個資料被稱為狀態,進而依賴這個“狀態”資料的服務被稱為有狀態服務,反之稱為無狀態服務,那么這個無狀態服務原則并不是說在微服務架構里就不允許存在狀態,表達的真實意思是要把有狀態的業務服務改變為無狀態的計算類服務,那么狀態資料也就相應的遷移到對應的“有狀態資料服務”中,場景說明:例如我們以前在本地記憶體中建立的資料快取、Session 快取,到現在的微服務架構中就應該把這些資料遷移到分布式快取中存盤,讓業務服務變成一個無狀態的計算節點,遷移后,就可以做到按需動態伸縮,微服務應用在運行時動態增刪節點,就不再需要考慮快取資料如何同步的問題,

2.5、Restful通信風格

? 基于**“無狀態服務原則”**,在這里我們直接推薦一個實踐優選的 Restful 通信風格 ,因為他有很多好處:

  • 無狀態協議 HTTP,具備先天優勢,擴展能力很強,例如需要安全加密時,有現成的成熟方案 HTTPS 可用,
  • JSON 報文序列化,輕量簡單,人與機器均可讀,學習成本低,搜索引擎友好,
  • 語言無關,各大熱門語言都提供成熟的 Restful API 框架,相對其他的一些 RPC 框架生態更完善,

第三章 Spring Cloud介紹

? Spring Cloud 是一個服務治理平臺,提供了一些服務框架,包含了:服務注冊與發現、配置中心、訊息中心 、負載均衡、資料監控等等,

? Spring Cloud 是一個微服務框架,相比 Dubbo 等 RPC 框架,Spring Cloud 提供了全套的分布式系統解決方案,

? Spring Cloud 對微服務基礎框架 Netflix 的多個開源組件進行了封裝,同時又實作了和云端平臺以及 Spring Boot 框架的集成,

? Spring Cloud 是一個基于 Spring Boot 實作的云應用開發工具,它為開發中的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全域鎖、決策競選、分布式會話和集群狀態管理等操作提供了一種簡單的開發方式,

? Spring Cloud 為開發者提供了快速構建分布式系統的工具,開發者可以快速的啟動服務或構建應用、同時能夠快速和云平臺資源進行對接,微服務是可以獨立部署、水平擴展、獨立訪問(或者有獨立的資料庫)的服務單元,Spring Cloud 就是這些微服務的大管家,采用了微服務這種架構之后,專案的數量會非常多,Spring Cloud 做為大管家需要管理好這些微服務,自然需要很多小弟(組件)來幫忙,

第四章 Spring Cloud組件介紹

4.1、第一代微服務

? Netflix是一家美國公司,在美國、加拿大提供互聯網隨選流媒體播放,定制DVD、藍光光碟在線出租業務,該公司成立于1997年,總部位于加利福尼亞州洛斯蓋圖,1999年開始訂閱服務,2009年,該公司可提供多達10萬部DVD電影,并有1千萬的訂戶,2007年2月25日,Netflix宣布已經售出第10億份DVD,HIS一份報告中表示,2011年Netflix網路電影銷量占據美國用戶在線電影總銷量的45%,針對多種 Netflix 組件提供的開發工具包,其中包括 Eureka、Hystrix、Ribbon、Zuul、Archaius 等,

官方地址:https://github.com/spring-cloud/spring-cloud-netflix

  • Netflix Eureka:一個基于 Rest 服務的服務治理組件,包括服務注冊中心、服務注冊與服務發現機制的實作,實作了云端負載均衡和中間層服務器的故障轉移,
  • Netflix Hystrix:容錯管理工具,實作斷路器模式,通過控制服務的節點,從而對延遲和故障提供更強大的容錯能力,
  • Netflix Ribbon:客戶端負載均衡的服務呼叫組件,
  • Netflix Feign:基于 Ribbon 和 Hystrix 的宣告式服務呼叫組件,
  • Netflix Zuul:微服務網關,提供動態路由,訪問過濾等服務,
  • Netflix Archaius:配置管理 API,包含一系列配置管理 API,提供動態型別化屬性、執行緒安全配置操作、輪詢框架、回呼機制等功能,

4.2、第二代微服務

? Spring Cloud Alibaba 致力于提供微服務開發的一站式解決方案,此專案包含開發分布式應用微服務的必需組件,方便開發者通過 Spring Cloud 編程模型輕松使用這些組件來開發分布式應用服務,依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以將 Spring Cloud 應用接入阿里微服務解決方案,通過阿里中間件來迅速搭建分布式應用系統,

官方地址:https://github.com/alibaba/spring-cloud-alibaba

  • Sentinel:把流量作為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性,
  • Nacos:一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺,
  • RocketMQ:一款開源的分布式訊息系統,基于高可用分布式集群技術,提供低延時的、高可靠的訊息發布與訂閱服務,
  • Dubbo:Apache Dubbo? 是一款高性能 Java RPC 框架,
  • Seata:阿里巴巴開源產品,一個易于使用的高性能微服務分布式事務解決方案,
  • Alibaba Cloud OSS: 阿里云物件存盤服務(Object Storage Service,簡稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存盤服務,您可以在任何應用、任何時間、任何地點存盤和訪問任意型別的資料,
  • Alibaba Cloud SchedulerX: 阿里中間件團隊開發的一款分布式任務調度產品,提供秒級、精準、高可靠、高可用的定時(基于 Cron 運算式)任務調度服務,
  • Alibaba Cloud SMS: 覆寫全球的短信服務,友好、高效、智能的互聯化通訊能力,幫助企業迅速搭建客戶觸達通道,

第五章 Spring Cloud版本介紹

5.1、版本歷史

采用倫敦的地鐵站名稱來作為版本號的命名,根據首字母排序,字母順序靠后的版本號越大,

注意:以下資料截至到2021-01-31號之前,

  • Angel
  • Brixton
  • Camden
  • Dalston
  • Edgware
  • Finchley
  • Greenwich
  • Hoxton
  • 2020.0 (code name ilford)

5.2、版本說明

發布計劃:

標識含義說明
BUILD-XXX開發版開發團隊內部使用
M里程碑版MileStone,M1 表示第 1 個里程碑版本,一般同時標注 PRE,表示預覽版
RC候選發布版Release Candidate,正式發布版的前一個觀察期,不添加新功能,主要著重于除錯
SR正式發布版Service Release,SR1 表示第 1 個正式版本,一般同時標注 GA,表示穩定版本
GA穩定版經過全面測驗并可對外發行稱之為GA(General Availability)

各版本號:

例如:Spring Cloud Alibaba 2.1.0.RELEASE

  • 2:主版本號,當功能模塊有較大更新或者整體架構發生變化時,主版本號會更新,
  • 1:次版本號,次版本表示只是區域的一些變動,
  • 0:修改版本號,一般是 bug 的修復或者是小的變動,
  • RELEASE:希臘字母版本號,標注當前版本的軟體處于哪個開發階段,

希臘字母:

  • Base:設計階段,只有相應的設計沒有具體的功能實作,
  • Alpha:軟體的初級版本,存在較多的 bug,
  • Bate:表示相對 Alpha 有了很大的進步,消除了嚴重的 bug,還存在一些潛在的 bug,
  • Gamma:是 Beta 版做過一些修改,成為正式發布的候選版本(Release Candidate),
  • Release:該版本表示最終版,

第六章 Spring Cloud版本要求

查看地址:https://start.spring.io/actuator/info

image-20210129134518284

6.1、Spring Cloud

具體版本要求地址:https://docs.spring.io/spring-cloud/docs/Hoxton.SR9/reference/html/

image-20210129134706432

注意:maven建議使用3.6.3,jdk應該保持1.8及以上,

6.2、Spring Cloud Alibaba

具體版本要求地址:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

image-20210129135045719

注意:maven建議使用3.6.3,jdk應該保持1.8及以上,

第七章 Spring Cloud開發準備

7.1、idea創建父工程

image-20210129140606885

7.2、idea統一編碼集

7.3、idea注解的配置

7.4、idea排除的檔案

*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;*.idea;*.iml;

7.5、idea熱部署設定

按下 CTRL+ALT+SHITF+/ 會彈出一個視窗,請點擊 Registry

注意:這一步設定完成以后,請重新啟動idea,為了讓這些配置生效,

7.6、修改 POM 內容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.caochenlei</groupId>
  <artifactId>spring-cloud-study</artifactId>
  <version>2021</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!--spring boot 2.3.5.RELEASE-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.5.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--spring cloud Hoxton.SR9-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR9</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/254526.html

標籤:其他

上一篇:都2021年了,還不會JetPack的Android開發以后連面試機會都沒有!

下一篇:面試阿里被質問:ConcurrentHashMap執行緒安全嗎

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more