欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 前端技术 > javascript >内容正文

javascript

springcloud基本模块分配搭建以及负载均衡 -ag凯发k8国际

发布时间:2024/10/12 javascript 25 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 springcloud基本模块分配搭建以及负载均衡 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

springcloud是基于springboot的一套微服务的ag凯发k8国际的解决方案,springboot可以快速构建单个应用服务,而springcloud没有重复造轮子而是将现有的技术(服务发现,负载均衡等)整合到一起提供一套分布式服务ag凯发k8国际的解决方案。

 

整体的项目结构

以上是整个项目的结构块

父类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 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 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 selectall() {return lists.transform(studentmapper.selectall(), new function() {@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

总结

以上是ag凯发k8国际为你收集整理的springcloud基本模块分配搭建以及负载均衡的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图