1.是什麼
springcloud是一系列框架的有序集合,它利用Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啓動和部署。Spring Cloud並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分佈式系統開發工具包。
2.有卵用
在目前五花八門的分佈式解決方案中提供了標準化的、全站式的技術方案,
分佈式有卵用:一口火鍋一個人吃完要點時間,一桌子人一人一口就沒了。一個應用一臺服務器帶不動,多來幾臺就好了。
3.怎麼用
前置科技:maven,springboot,數據庫
乾貨如下
消費者-生產者-倉儲模型
倉儲倉儲是根本,倉儲倉儲是根本,倉儲倉儲是根本
1、生產者僅僅在倉儲未滿時候生產,倉滿則停止生產。
2、消費者僅僅在倉儲有產品時候才能消費,倉空則等待。
3、當消費者發現倉儲沒產品可消費時候會通知生產者生產。
4、生產者在生產出可消費產品時候,應該通知等待的消費者去消費。
項目基本結構
cloud://父項目
cloud-commons//公共對象或配置
cloud-provider//生產者
cloud-consumer//消費者
父項目建立
我們開發項目,現在基本都用到maven,以及用父子項目,以及公共模塊依賴,來構建方便擴展的項目體系;首先我們建立父項目 cloud,主要是一個pom,管理module,以及管理依賴,規範所有jar包版本等;
新建maven項目
勾選 create a simple project
填寫groud ip , artifact Id , Packaging 指定成pom
這裏引入了 springcloud 以及springboot 包括 druid連接池 以及 屬性 規範編譯 目標版本,包括連接池版本 編碼等信息
我們Springcloud版本 用 Edgware.SR4
修改pom.xml
<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.hxzy.gz</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>cloud</name>
<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>
<druid.version>1.1.10</druid.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.13.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>cloud-commons</module>
<module>cloud-provider-1001</module>
<module>cloud-consumer-80</module>
</modules>
</project>
cloud-commons依賴:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
entity:
@Entity
@Table(name = "teacher")
public class Teacher {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int tno;
private String tname;
}