(三)SpringCloud實戰微服務
一、微服務架構概述
1.1 微服務特性以及優點
- 每個服務可以獨立執行在自己的程序裡
- 一系列獨立執行的微服務(goods,order,pay,user,search…)共同構建了整個系統
- 每個服務為獨立的業務開發,一個微服務只關注某個特定的功能,例如使用者管理,商品管理微服務
- 微服務之間通過一些輕量級的通訊機制進行通訊,例如通過Restful API進行呼叫
- 技術棧不受限:可以使用不同的開發語言和資料儲存技術
- 全自動的部署機制
- 按需伸縮:根據需求和應用場景,實現細粒度的水平擴充套件
1.2 微服務帶來的挑戰
- 運維要求較高
- 分散式的複雜性
- 介面調整成本較高
1.3 微服務設計原則
- 單一職責原則
- 服務自治原則
- 輕量級通訊機制
- 微服務粒度
1.4 微服務開發框架
- SpringCloud:眾多元件構造完善的分散式系統
- Dubbo/Dubbox:關注服務治理
- Dropwizard:關注單個微服務開發
二、 SpringCloud概述與開發環境
2.1 SpringCloud概述
SpringCloud是基於SpringBoot之上的用來快速構建微服務系統的工具集,擁有功能完善的輕量級微服務元件,例如服務治理(Eureka),宣告式REST呼叫(Feign),客戶端負載均衡(Ribbon),服務容錯(Hystrix),服務閘道器(Zuul)以及服務配置(Spring Cloud Config),服務跟蹤(Sleuth)等等。
官網連結:http://projects.spring.io/spring-cloud/
目前主流的版本為SpringBoot1.4.5.RELEAE和SpringCloudCamden.SR7,
Maven pom配置如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.5.RELEASE</version >
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId></groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId></groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
2.2 開發環境
MacOS10.12+JDK8u131+IntelliJ IDEA2017.1.4
Tomcat8.5+Maven3.3.9+Git2.12+Firefox54
Spring4.3.9.RELEASE+SpringBoot1.4.5.RELEASE+SpringCloud Camden.SR7
三、 工程機器模組說明
3.1 工程說明
工程首先自定義了Maven父工程,其中定義如下的公共元件:
<?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>
<!-- 自定義工程的maven座標-->
<groupId>com.ekeyfund.springcloud</groupId>
<artifactId>springcloud-parent</artifactId>
<version>2.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 基於SpringBoot 1.4.5.RELEASE-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.5.RELEASE</version>
<relativePath/>
</parent>
<!-- 定義引用類庫版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Camden.SR7</spring-cloud.version>
<springcloud-parent.version>2.0.0-SNAPSHOT</springcloud-parent.version>
<druid.version>1.0.31</druid.version>
<jackson.version>2.8.8</jackson.version>
<commons-lang3.version>3.5</commons-lang3.version>
<ehcache.version>3.1.4</ehcache.version>
<hibernate.version>5.0.12.Final</hibernate.version>
<servlet-api.version>3.1.0</servlet-api.version>
<commons-collection4.version>4.1</commons-collection4.version>
<springframework.oxm.version>4.3.9.RELEASE</springframework.oxm.version>
</properties>
<!-- 引入SpringCloud微服務常用元件-->
<modules>
<module>springcloud-eureka-server</module>
<module>springcloud-eureka-server-ha</module>
<module>springcloud-provider-user-service</module>
<module>springcloud-consumer-h5-ribbon-hystrix</module>
<module>springcloud-consumer-h5-feign</module>
<module>springcloud-api-gateway</module>
<module>springcloud-consumer-h5</module>
<module>springcloud-config-server</module>
</modules>
<dependencies>
<!-- 服務發現元件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 應用監控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 應用測試-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet-api.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>${commons-collection4.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>${ehcache.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${springframework.oxm.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
3.2 模組說明
模組則藉助IntelliJ IDEA結合Spring Initializer自動生成工程結構,主要模組和說明如下:
模組名稱 | 模組說明 | 訪問地址 |
---|---|---|
springcloud-eureka-server | 分散式服務註冊中心(單點) | http://127.0.0.1:9999 |
springcloud-eureka-server-ha | 分散式服務註冊中心(高可用版本) | http://127.0.0.1:9998 http://127.0.0.1:9997 |
springcloud-provider-user-service | 使用者服務提供者 | http://127.0.0.1:9996/list http://127.0.0.1:9995/list |
springcloud-consumer-h5 | 使用者服務呼叫者,採用原始的RestTemplate呼叫 | http://127.0.0.1:9991/user/get/4 |
springcloud-consumer-h5-ribbon-hystrix | 使用者服務呼叫者,採用ribbon做客戶端負載均衡 | http://127.0.0.1:9994/springcloud-provider-user-service |
springcloud-consumer-h5-feign | feign宣告式服務呼叫者 | http://127.0.0.1:9993/list |
springcloud-gateway | 閘道器服務 | http://127.0.0.1:9992/api-a/list |
springcloud-config-server | 配置中心 | 待定 |
四、 使用SpringBoot實現服務提供者
所屬maven模組:springcloud-provider-user-service
基於SpringBoot的Web和JPA模組實現Restful API的常用方法
4.1 entity
主要包含User,Role,Department三個實體
Role.java
package com.ekeyfund.springcloud.entity;
import javax.persistence.*;
import java.io.Serializable;
/**
* Role Entity
*
* @author Liuguanglei [email protected]
* @create 2017-06-下午2:36
*/
@Entity
@Table(name = "springboot_role")
public class Role implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "role_id")
private Long id;
@Column(name = "role_name")
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return new org.apache.commons.lang3.builder.ToStringBuilder(this)
.append("id", id)
.append("name", name)
.toString();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
Department.java
package com.ekeyfund.springcloud.entity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence.*;
import java.io.Serializable;
/**
* Department Entity
*
* @author Liuguanglei [email protected]
* @create 2017-06-下午2:31
*/
@Entity
@Table(name = "springboot_department")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Department implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "department_id")
private Long id;
@Column(name = "department_name")
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("name", name)
.toString();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
User.java
package com.ekeyfund.springcloud.entity;
import com.fasterxml.jackson.annotation.JsonBackReference;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* User Entity
*
* @author Liuguanglei [email protected]
* @create 2017-06-下午2:32
*/
@Entity
@Table(name = "springboot_user")
public class User implements Serializable{
@Id
@Column(name = "user_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_name")
private String name;
@Column(name = "user_password")
private String password;
@Column(name = "user_create_date")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createDate;
@ManyToOne
@JoinColumn(name = "department_id")
@JsonBackReference
private Department department;
@ManyToMany(cascade = {},fetch = FetchType.EAGER)
@JoinTable(name = "springboot_user_role",joinColumns = {@JoinColumn(name="user_id")},
inverseJoinColumns = {@JoinColumn(name = "role_id")}
)
private List<Role> roleList;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
public List<Role> getRoleList() {
return roleList;
}
public void setRoleList(List<Role> roleList) {
this.roleList = roleList;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("name", name)
.append("password", password)
.append("createDate", createDate)
.append("department", department)
.append("roleList", roleList)
.toString();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
4.2 資料訪問Repository
主要包含UserRepository和DepartmentRepository
DepartmentRepository.java
package com.ekeyfund.springcloud.repository;
import com.ekeyfund.springcloud.entity.Department;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* Created by tony on 2017/6/19.
*/
@Repository
public interface DepartmentRepository extends JpaRepository<Department,Long> {
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
UserRepoistory.java
package com.ekeyfund.springcloud.repository;
import com.ekeyfund.springcloud.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* User Repository
*
* @author Liuguanglei liuguanglei@ekeyfund.com
* @create 2017-06-下午2:54
*/
@Repository
public interface UserRepository extends JpaRepository<User,Long>{
/**
* and
* @param id
* @param name
* @return
*/
User findByIdAndName(Long id, String name);
User findByNameAndPassword(String name, String password);
/**
* or
* @param id
* @param name
* @return
*/
User findByIdOrName(Long id, String name);
/**
* between
* @param start
* @param end
* @return
*/
List<User> findByCreateDateBetween(Date start, Date end);
/**
* lessThan
* @param start
* @return
*/
List<User> getByCreateDateLessThan(Date start);
/**
* Greater Than
* @param start
* @return
*/
List<User> findByCreateDateGreaterThan(Date start);
/**
* is null
* @return
*/
List<User> findByNameIsNull();
/**
* in
* @param nameList
* @return
*/
List<User> findByNameIn(Collection<String> nameList);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
-
相關推薦
(三)SpringCloud實戰微服務
一、微服務架構概述 1.1 微服務特性以及優點 每個服務可以獨立執行在自己的程序裡 一系列獨立執行的微服務(goods,order,pay,user,search…)共同構建了整個系統 每個服務為獨立的業務開發,一個微服務只關注某個特定的功能,
Java架構-(三)spring cloud微服務分散式雲架構 - Spring Cloud整合專案簡介
Spring Cloud整合專案有很多,下面我們列舉一下和Spring Cloud相關的優秀專案,我們的企業架構中用到了很多的優秀專案,說白了,也是站在巨人的肩膀上去整合的。在學習Spring Cloud之前大家必須瞭解一下相關專案,希望可以幫助到大家。 Spring Cloud C
(三)spring cloud微服務分布式雲架構 - Spring Cloud集成項目簡介
工具包 容錯 conn 服務器 啟動 興趣 能力 基於 一個 Spring Cloud集成項目有很多,下面我們列舉一下和Spring Cloud相關的優秀項目,我們的企業架構中用到了很多的優秀項目,說白了,也是站在巨人的肩膀上去整合的。在學習Spring Cloud之前大家
Java架構-(三)spring cloud微服務分散式雲架構
Spring Cloud整合專案有很多,下面我們列舉一下和Spring Cloud相關的優秀專案,我們的企業架構中用到了很多的優秀專案,說白了,也是站在巨人的肩膀上去整合的。在學習Spring Cloud之前大家必須瞭解一下相關專案,希望可以幫助到大家。 Spr
(三)spring cloud微服務分散式雲架構
Spring Cloud整合專案有很多,下面我們列舉一下和Spring Cloud相關的優秀專案,我們的企業架構中用到了很多的優秀專案,說白了,也是站在巨人的肩膀上去整合的。在學習Spring Cloud之前大家必須瞭解一下相關專案,希望可以幫助到大家。 Spring Cl
微服務分散式事務實戰(三)SpringCloud註冊中心編寫和測試
SpringCloud註冊中心編寫和測試 (1)建立註冊中心工程 (2)新增jar包 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLS
(三)springcloud - 微服務架構代碼結構
article 搭建 ring 分享 組件 particle ima api 微服務雲架構 我們根據微服務化設計思想,結合spring cloud本身的服務發現、治理、配置化管理、分布式等項目優秀解決方案,我們使用Maven技術將框架進行模塊化、服務化、原子化封裝,也為後期
Re:從0開始的微服務架構:(一)重識微服務架構--轉
相關 推廣 模塊劃分 ati 滿足 face jar 點擊放大 積累 原文地址:http://www.infoq.com/cn/articles/micro-service-architecture-from-zero?utm_source=infoq&utm_me
基於容器微服務的PaaS雲平臺設計(一) 實現容器微服務和持續集成
顯示 一次 target 全部 ext neu openshift svn客戶端 enc 版權聲明:本文為博主原創文章,歡迎轉載,轉載請註明作者、原文超鏈接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 前言:關於什麽是容器微服務Paa
(三)調用web服務
第一個 技術 new res 調用服務 col static package 地址 (二)發布第一個WebService服務與DSWL文檔解析 講解了如何發布一個web服務,本章主要講述如何調用一個web服務。 這裏有三種方式: 使用代理模式調用,需要將服
微服務實戰(六):選擇微服務部署策略
因此 區別 嚴重 http 虛擬化 one rose 精確 命名空間 微服務實戰(一):微服務架構的優勢與不足 微服務實戰(二):使用API Gateway 微服務實戰(三):深入微服務架構的進程間通信 微服務實戰(四):服務發現的可行方案以及實踐案例 微服務實踐(五)
從0開始的微服務架構:(一)重識微服務架構
拆分 dock try 快速入門 比較 資源 貼吧 升級維護 頁面 導語 雖然已經紅了很久,但是“微服務架構”正變得越來越重要,也將繼續火下去。 各個公司與技術人員都在分享微服務架構的相關知識與實踐經驗,但我們發現,目前網上的這些相關文章中,要麽上來就是很有借鑒意義的幹貨,
從 0 開始的微服務架構:(四)如何保障微服務架構下的數據一致性
網上 行數 解決方案 open 了解 傳播 發的 目的 cati 雖然已經紅了很久,但是“微服務架構”正變得越來越重要,也將繼續火下去。各個公司與技術人員都在分享微服務架構的相關知識與實踐經驗,但我們發現,目前網上的這些相關文章中,要麽上來就是很有借鑒意義的幹貨,要麽就是以
(三)發布Dubbo服務
nbsp 6.0 main 發布 static ast vid [] 成功 我們現在來學習下發布Dubbo服務,主要參考dubbo開發包裏的demo源碼;由淺入深的講解下這個小demo; github地址:https://github.com/apache/incubat
多研究些架構,少談些框架(1):論微服務架構的核心概念
定位 dubbo spring 提供服務 電信 cor res gate 虛擬 微服務架構和SOA區別 微服務現在辣麽火,業界流行的對比的卻都是所謂的Monolithic單體應用,而大量的系統在十幾年前都是已經是分布式系統了,那麽微服務作為新的理念和原來的分布式系統,或者說
Java架構-(二)spring cloud微服務分散式雲架構 - 整合企業架構的技術點
spring cloud本身提供的元件就很多,但我們需要按照企業的業務模式來定製企業所需要的通用架構,那我們現在需要考慮使用哪些技術呢? 下面我針對於spring cloud微服務分散式雲架構做了以下技術總結,希望可以幫助到大家: View: H5、Vue.js、Spring T
Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介
Spring Cloud是一系列框架的有序集合。利用Spring Boot的開發模式簡化了分散式系統基礎設施的開發,如服務發現、註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等(這裡只簡單的列了一部分),都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring C
(一)spring cloud微服務分布式雲架構 - Spring Cloud簡介
ring 屏蔽 實踐 客戶 復雜 幫助 如何 zookeeper 系統架構 Spring Cloud是一系列框架的有序集合。利用Spring Boot的開發模式簡化了分布式系統基礎設施的開發,如服務發現、註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等(這裏只簡單的列
(二)spring cloud微服務分布式雲架構 - 整合企業架構的技術點
微服務 utils lar zip dao zipkin onf feign eureka spring cloud本身提供的組件就很多,但我們需要按照企業的業務模式來定制企業所需要的通用架構,那我們現在需要考慮使用哪些技術呢? 下面我針對於spring cloud微服務分
(二)spring cloud微服務分散式雲架構-整合企業架構的技術點
spring cloud本身提供的元件就很多,但我們需要按照企業的業務模式來定製企業所需要的通用架構,那我們現在需要考慮使用哪些技術呢? 下面我針對於spring cloud微服務分散式雲架構做了以下技術總結,希望可以幫助到大家: View: H5、Vue.js、Spring T