日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringCloud基本模块分配搭建以及负载均衡

發布時間:2024/10/12 javascript 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringCloud基本模块分配搭建以及负载均衡 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

springcloud是基于springboot的一套微服務的解決方案,springboot可以快速構建單個應用服務,而springcloud沒有重復造輪子而是將現有的技術(服務發現,負載均衡等)整合到一起提供一套分布式服務解決方案。

?

整體的項目結構

以上是整個項目的結構塊

父類gradle.build引入

buildscript {ext {springBootVersion = '1.5.10.RELEASE'}repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")} }subprojects {apply plugin: 'java'apply plugin: 'idea'apply plugin: 'org.springframework.boot'group = 'com.rk.ytl'version = '0.0.1-SNAPSHOT'sourceCompatibility = 1.8repositories {mavenLocal()mavenCentral()}ext {springCloudVersion = 'Edgware.SR3'}dependencies {compile('org.springframework.boot:spring-boot-starter-web')compile('org.springframework.cloud:spring-cloud-starter') // compile('org.springframework.cloud:spring-cloud-starter-eureka') // compile('org.springframework.cloud:spring-cloud-starter-eureka-server')runtime('org.springframework.boot:spring-boot-devtools')testCompile('org.springframework.boot:spring-boot-starter-test')}dependencyManagement {imports {mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"}} } View Code

?

?

首先創建注冊中心register-center注冊中心,這里注冊中心就不多做介紹了。注冊中心的啟動類

package com.rk.ytl.register;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/*** @author 楊天樂* @date 2018/3/29 9:59*/ @SpringBootApplication @EnableEurekaServer public class RegisterCenterApplication {public static void main(String[] args) {SpringApplication.run(RegisterCenterApplication.class,args);} } View Code

建立注冊中心的配置(application)

spring:application:name: register-center server:port: 8000 eureka:client:service-url:defaultZone: http://localhost:8000/eurekafetch-registry: falseregister-with-eureka: false View Code

這里fetch-registry,register-with-eureka必須指定為false,表名是一個注冊中心

注冊中心gradle.build 引入

dependencies {compile('org.springframework.cloud:spring-cloud-starter-eureka-server') }

注冊中心就完成了。

?

創建業務接口和數據接口,這里就不做過多的講解了。

service-api:

package com.rk.ytl.api;import com.rk.ytl.dto.StudentDTO; import com.rk.ytl.vo.StudentVO;import java.util.List;/*** @author 楊天樂* @date 2018/3/29 10:18*/ public interface IStudentService {List<StudentDTO> selectAll();Integer LoadBalancedPortTest(); } View Code package com.rk.ytl.dto;import java.sql.Date; import java.util.Objects;/*** @author 楊天樂* @date 2018/3/29 10:04*/ public class StudentDTO {private Integer id;private String stuName;private Integer age;private String time;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getTime() {return time;}public void setTime(String time) {this.time = time;} } View Code package com.rk.ytl.vo;import java.sql.Date; import java.util.Objects;/*** @author 楊天樂* @date 2018/3/29 10:04*/ public class StudentVO {private Integer id;private String stuName;private Integer age;private String time;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getTime() {return time;}public void setTime(String time) {this.time = time;} } View Code

project-dao:

package com.rk.ytl.dao.entity;import org.apache.ibatis.type.Alias;/*** @author 楊天樂* @date 2018/3/29 10:04*/ @Alias("StudentEntity") public class StudentEntity {private Integer id;private String stuName;private Integer age;private String time;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getTime() {return time;}public void setTime(String time) {this.time = time;} } View Code package com.rk.ytl.dao.mapper;import com.rk.ytl.dao.entity.StudentEntity;import java.util.List;/*** @author 楊天樂* @date 2018/3/29 10:08*/ public interface StudentMapper {List<StudentEntity> selectAll(); } View Code

project-dao的gradle.build,引入mybatis和springboot的集成jar,已經mysql的jar

dependencies {compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.40'compile group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '1.3.2' } View Code

?

接下來創建Student-service業務模塊

build里引入project-dao,service-api的依賴

dependencies {compile project(':project-dao')compile project(':service-api')compile('org.springframework.cloud:spring-cloud-starter-eureka-server') } View Code

編寫mybatis配置文件,application-local也是如下只是server.port端口不同(用于測試負載均衡)

spring:application:name: Student-servicedatasource:url: jdbc:mysql://localhost:3306/myschool?characterEncoding=utf-8&useSSL=falsedriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: root server:port: 8001 eureka:client:service-url:defaultZone: http://localhost:8000/eureka mybatis:type-aliases-package: com.rk.ytl.dao.entitymapper-locations: mappers/*.xml View Code

mappers文件下的studentMapper.xml對應project-dao接口的方法并實現

創建Student-service啟動類

package com.ytl.student;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/*** @author 楊天樂* @date 2018/3/29 10:17*/ @SpringBootApplication @EnableEurekaServer @MapperScan("com.rk.ytl.dao.mapper") public class StudentServiceApplication {public static void main(String[] args) {SpringApplication.run(StudentServiceApplication.class,args);} } View Code

@MapperScan("")對應掃描project-dao的mapper包

創建service包,新建實現業務類

package com.ytl.student.service;import com.google.common.base.Function; import com.google.common.collect.Lists; import com.rk.ytl.api.IStudentService; import com.rk.ytl.dao.entity.StudentEntity; import com.rk.ytl.dao.mapper.StudentMapper; import com.rk.ytl.dto.StudentDTO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.annotation.Nullable; import java.util.List;/*** @author 楊天樂* @date 2018/3/29 10:18*/ @RestController @Service public class StudentServiceImpl implements IStudentService {@Autowiredprivate StudentMapper studentMapper;@GetMapping("/selectAll")@Overridepublic List<StudentDTO> selectAll() {return Lists.transform(studentMapper.selectAll(), new Function<StudentEntity, StudentDTO>() {@Nullable@Overridepublic StudentDTO apply(@Nullable StudentEntity input) {StudentDTO studentDTO = new StudentDTO();BeanUtils.copyProperties(input,studentDTO);return studentDTO;}});}@Value("${server.port}")private Integer port;@RequestMapping("/test")@Overridepublic Integer LoadBalancedPortTest() {return port;} } View Code

最后一個Student-Client用于測試負載均衡

application.yml配置就是最基本的配置發現服務中心

spring:application:name: Student-Client server:port: 8080 eureka:client:service-url:defaultZone: http://localhost:8000/eureka View Code

Student-Client創建啟動類

@LoadBalanced是關鍵,不加,不能實現負載均衡

package com.rk.ytl;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate;/*** @author 楊天樂* @date 2018/3/29 10:39*/ @SpringBootApplication @EnableDiscoveryClient public class StudentClientApplication {@Bean@LoadBalancedRestTemplate template(){return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(StudentClientApplication.class,args);} } View Code

創建controller用于測試

package com.rk.ytl.controller;import com.rk.ytl.dto.StudentDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate;/*** @author 楊天樂* @date 2018/3/29 10:40*/ @RestController public class TestController {@Autowiredprivate RestTemplate restTemplate;@RequestMapping(value = "/test")public Integer test(){return restTemplate.getForObject("http://STUDENT-SERVICE/test",Integer.class);} } View Code

url一定要對應業務名稱

gradle.build引入eureka的客戶端

dependencies {compile project(':service-api')compile('org.springframework.cloud:spring-cloud-starter-eureka') } View Code

?

一直訪問localhost:8080/test就能看見端口在切換,實現了負載均衡。

?

學到希望大家給個贊,多評論,謝謝!

?

轉載于:https://www.cnblogs.com/yangtianle/p/8669015.html

總結

以上是生活随笔為你收集整理的SpringCloud基本模块分配搭建以及负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。