SpringCloud(Finchley.RELEASE版本)+SpringBoot(2.0.3.RELEASE)微服务框架搭建

@SpringCloud(Finchley.RELEASE版本)+SpringBoot(2.0.3.RELEASE)微服务框架搭建

eureka注册中心

由于项目需要,以及应对高并发建议搭建高可用注册中心,pow依赖以及配置文件如下:
SpringCloud(Finchley.RELEASE版本)+SpringBoot(2.0.3.RELEASE)微服务框架搭建_第1张图片


        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            org.springframework.boot
            spring-boot-starter-security
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
        ${project.name}
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                ${spring-boot.version}
                
                    
                        
                            repackage
                        
                    
                
            
        
        
            
                src/main/java
                
                    **/*.xml
                
            
            
                src/main/resources
            
        
        
            
                src/test/java
                
                    **/*.xml
                
            
            
                src/test/resources
            
        
    

application.properties文件内容

#安全认证
spring.security.user.name=admin
spring.security.user.password=123

以下是application-peer1.properties文件内容


server.port=8000
spring.application.name=zy_eureka

eureka.instance.hostname=peer1
#维护实例,不需要去检索服务
#eureka.client.register-with-eureka=false
#不注册自己
eureka.client.fetch-registry=true
#eureka地址
eureka.client.serviceUrl.defaultZone=http://admin:123@peer2:8100/eureka/
#开启ip地址形式来定义注册中心的地址
#eureka.instance.prefer-ip-address=true
#开发阶段关闭服务的自我保护
#eureka.server.enable-self-preservation=false

以下是application-peer2.properties文件内容

server.port=8100
spring.application.name=zy_eureka

eureka.instance.hostname=peer2
#维护实例,不需要去检索服务
#eureka.client.register-with-eureka=false
#不注册自己
eureka.client.fetch-registry=true
#eureka地址
eureka.client.serviceUrl.defaultZone=http://admin:123@peer1:8000/eureka/
#开启ip地址形式来定义注册中心的地址
#eureka.instance.prefer-ip-address=true
#开发阶段关闭服务的自我保护
#eureka.server.enable-self-preservation=false

#注册中心的启动,通过命令行模式,首先项目打jar包,后打开cmd输入如下命令:
java -jar jar包名.jar --spring.profiles.active=peer1
java -jar jar包名.jar --spring.profiles.active=peer2
#注册中心启动后会互相注册

网关zuul

#网关是微服务中不可或缺的一部分,外部请求统一通过网关请求,通过验证,拦截处理后,通过zuul的router过滤器路由到不同的服务模块中去,来保护各服务的实例地址
网关的pom依赖如下:


        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-zuul
        
        
            org.springframework.cloud
            spring-cloud-starter-config
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.cloud
            spring-cloud-starter-bus-amqp
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    
    
        ${project.name}
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                ${spring-boot.version}
                
                    
                        
                            repackage
                        
                    
                
            
        
        
            
                src/main/java
                
                    **/*.xml
                
            
            
                src/main/resources
            
        
        
            
                src/test/java
                
                    **/*.xml
                
            
            
                src/test/resources
            
        
    

以下是配置文件,由于网关的路由配置同步到springcloud的配置中心在F版本中还有问题(博主还未解决),所以没有添加bus(消息总线)和config(配置中心的依赖),如下是网关配置文件:

spring.application.name=zyzuul
#spring.cloud.config.label=master
#spring.cloud.config.profile=dev
#spring.cloud.config.uri=http://localhost:8881/
#为配置中心添加安全保护
#spring.cloud.config.username=user
#spring.cloud.config.password=123
#spring.cloud.bus.enabled=true
#spring.cloud.bus.trace.enabled=true
spring.rabbitmq.port=5672
spring.rabbitmq.host=localhost
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
server.port=8002
#配置路由地址
zuul.routes.zy_member.path=/zymember.**
#通过服务名,配置路由映射地址
zuul.routes.zy_member.url=zymember
#注册中心地址
eureka.client.serviceUrl.defaultZone=http://admin:123@peer1:8000/eureka/,http://admin:123@peer2:8100/eureka/
#保护cookie中的信息
zuul.routes..customSensitiveHeaders=true
#解决重定向问题,保护实例地址
zuul.addHostHeader=true
#该参数用来设置API网关中路由转发请求的HysstrixCommand执行超时时间(ms)
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds:6000
#路由转发请求,创建请求连接的超时时间(ms),该参数小于timeoutInMilliseconds,在连接超时时会
#自动重试路由请求
ribbon.ConnectTimeout=5000
#路由转发请求的超时时间,与请求连接类似
ribbon.ReadTimeout=2000
#开发阶段关闭重试机制,默认出现bug,全局关闭
zuul.retryable=false
#服务提供者维持心跳
eureka.instance.lease-renewal-interval-in-seconds=30
#90秒无心跳服务失效,进行eureka的"剔除任务"
eureka.instance.lease-expiration-duration-in-seconds=90

#网关的核心为过滤器:pre,routing,post,error

public class MyZuulFilter extends ZuulFilter {
    //过滤器类型
    public String filterType() {
        return "pre";
    }
    //过滤器执行顺序
    public int filterOrder() {
        return 0;
    }
    //过滤器是否执行
    public boolean shouldFilter() {
        return true;
    }
    //具体逻辑
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        /*String accessToken = request.getParameter("accessToken");
        if(accessToken == null) {
            ctx.setSendZuulResponse(false);
            ctx.setResponseStatusCode(401);
            return null;
        }*/
        return null;
    }
}
在具体逻辑中,我们可以做accessToken校验,以及其他验证

SpringCloud配置中心

#配置中心是整个微服务的统一配置获取模块,所有服务统一地到配置中心取配置。同事集成bus消息总线,来动态地刷新配置(手动或者通过Git动态刷新),无需重启项目。
pom依赖如下:


        
            org.springframework.boot
            spring-boot-starter-parent
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
            org.springframework.cloud
            spring-cloud-config-server
        
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.cloud
            spring-cloud-starter-bus-amqp
        
        
            org.springframework.boot
            spring-boot-starter-amqp
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
        ${project.name}
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                ${spring-boot.version}
                
                    
                        
                            repackage
                        
                    
                
            
        
        
            
                src/main/java
                
                    **/*.xml
                
            
            
                src/main/resources
            
        
        
            
                src/test/java
                
                    **/*.xml
                
            
            
                src/test/resources
            
        
    

application.properties配置内容以及注释如下:

#服务端口
server.port=8881
#服务名称
spring.application.name=zy_config
#服务注册中心
eureka.client.service-url.defaultZone=http://admin:123@peer1:8000/eureka/,http://admin:123@peer1:8100/eureka/
#服务的git仓库地址
spring.cloud.config.server.git.uri=您的git地址uri
#配置文件所在的目录
spring.cloud.config.server.git.search-paths=/**
#配置文件所在的分支
spring.cloud.config.label=master
#git仓库的用户名
spring.cloud.config.username=用户名(github/gitlable)
#git仓库的密码
spring.cloud.config.password=密码
#为配置中心添加安全保护
#security.user.name=user
#security.user.password=123
#关闭安全保护,动态刷新配置中心,开启端口
management.endpoints.web.exposure.include=bus-refresh
#使用消息总线refesh配置中心信息
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.cloud.bus.trace.enabled=true

#peer1,peer2是通过电脑中的hosts文件进行配置:
#127.0.0.1 peer1
#127.0.0.1 peer2

#启动类上注解如下:
SpringCloud(Finchley.RELEASE版本)+SpringBoot(2.0.3.RELEASE)微服务框架搭建_第2张图片
##博主也是在学习中,在这里简单介绍下springcloud的使用,以及配置文件。希望对您有所帮助!!!!!

你可能感兴趣的:(微服务)