SpringCloud清单

1.服务注册与发现  Eureka

//eureka客户端
eureka:
  client:
    service-url:  //客户端注册到某eureka服务端的url地址
      defaultZone: http://user:password123@localhost:9200/eureka/
    register-with-eureka: false    //是否将该应用注册到Eureka服务端
    fetch-registry: true  //是否从eureka服务端获取注册到服务端的客户端列表
  server:
    enable-self-preservation: false  //是否开启自我保护机制
  instance:
    prefer-ip-address: true    //是否将该应用的ip地址注册到eureka服务端,不然就注册该应用的主机名

2.负载均衡  Ribbon

    @Bean
    @LoadBalanced   //添加负载均衡注解,该restTemplate就拥有了负载均衡的能力
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

//调用实例:
Boolean b = restTemplate.getForObject("http://com-hp-finder/exist/" + uid, Boolean.class);

3.容错处理  Hystrix

@HystrixCommand(fallbackMethod="errorUser") //如果请求出现错误,就会调用回退方法errorUser,
//该方法与getUser()拥有相同的参数与返回类型
@GetMapping("/XX")
public User getUser(){};


public String errorUser(){
return "请求用户出现错误!";
}

4.微服务网关  Zuul


@SpringBootApplication
@EnableZuulProxy    //添加zuul注解,即可作为微服务网关
public class FinderzuulApplication {

    public static void main(String[] args) {
        SpringApplication.run(FinderzuulApplication.class, args);
    }

}
zuul:
  routes:  //路由配置
    user-route:   //给路由起的名字
      service-id: com-hp-finder-zuul   //service-id:服务名
      path: /app/**          //服务名对应的路径
  thread-pool: 
    use-separate-thread-pools: true   //是否使用线程池

 

5.微服务配置  Config

@SpringBootApplication
@EnableConfigServer
public class AppApplication {
    public static void main(String[] args) {
        SpringApplication.run(AppApplication.class, args);
    }

}
cloud:
    config:
        server:
            git:
            #配置git仓库的地址
            uri: 
            #配置git仓库的账号
            username: 
            #配置git仓库的密码
            password:


#git创建的配置文件   v1-foo-dev.properties  内容为:profile=dev-1.0
#访问  http://localhost:8080/v1-foo/dev  就是获取了v1-foo-dev.properties配置文件里的内容


#configClient配置获取configserver的git配置文件
spring:
    application:  //对应config server所获取的配置文件的{application}
        name: v1-foo
cloud:
    config:
        uri: http://localhost:8080/
        profile: dev  //profile对应config server所获取的配置文件中的{profile}
        label:master  //指定Git仓库的分支,对应config server所获取的配置文件的{label}

 

6.微服务跟踪  Sleuth

logging:
    level:
        root: INFO
        org.springframework.web.servlet.DispatcherServlet: DEBUG

7.声明式REST调用 Feign

8.Docker入门

Docker常用命令
docker search 镜像名   搜索镜像
docker pull 镜像名     下载镜像
docker images          列出镜像
docker rmi 镜像名      删除镜像
docker save            保存镜像
docker load           加载镜像
docker build          构建镜像


docker容器常用命令:
docker run 新建并启动容器
docker ps  列出容器
docker stop停止容器
docker kill 强制停止容器
docker start 启动已停止的容器
docker restart 重启容器
docker attach 进入容器
docker rm 删除容器
docker export 导出容器    docker export red_panda > lastest.tar 将red_panda容器导出成latest.tar文件  
docker import nginx2.tar nginx  从nginx2.tar导入,创建nginx镜像

9.Docker运行微服务

Dockerfile常用指令
ADD src  dest 复制文件
ARG user1=someuser   设置构建参数
CMD ["executable","param1","param2"]  容器启动命令
COPY src dest 复制文件
ENTRYPOINT ["executable","param1","param2"] 启动命令,可多次设置,最后一个有效
ENV JAVA_HOME /path/to/java  设置环境变量
EXPOSE 声明暴露端口
FROM 指定基础镜像
LABEL key=value 为镜像添加元数据
MAINTAINER  指定维护者的信息
RUN ["executable","param1","param2"] 执行命令
USER daemon 设置用户
VOLUME /data  指定挂载点
WORKDIR /path/to/workdir  指定工作目录



1.在jar包所在目录创建Dockerfile文件
2.添加:
#基于哪个景象
FROM java:8
#将本地文件夹挂载到当前容器
VOLUME /tmp
#复制文件到容器
ADD XXX-0.0.1.jar  /app.jar
#声明需要暴露的端口
EXPOSE 8761
#配置容器启动后执行的命令
ENTRYPOINT["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

3.使用docker build构建镜像
docker build -t itmuch/xx:0.0.1  仓库名称/镜像名称(:标签) Dockerfile的相对位置 

4.启动镜像
docker run -d -p 8761:8761 itmuch /xx:0.0.1

5.推送镜像到docker hub
docker push itmuch/xx:0.0.1
推送到私有仓库:
docker push localhost:5000/itmuch/xx:0.0.1




Maven插件构建Docker镜像
<plugin>
<grouid>com.spotify</grouid>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>itmuch/xx:0.0.1</imageName>
<baseImage>java</baseImage>
<entryPoint>["java","-jar","/{project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}</include>
</resource>
</resources>
</configuration>
</plugin>
执行命令 mvn clean package docker:build



插件读取dockerfile进行构建
<plugin>
<grouid>com.spotify</grouid>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>itmuch/xx:0.0.1</imageName>
<dockerDirectory>${project.baseDir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}</include>
</resource>
</resources>
</configuration>
</plugin>

10.Docker Compose编排微服务

1.在jar包当前目录创建Dockerfile
FROM java:8
VOLUME /tmp
ADD xx:0.0.1 app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 9000
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]


2.在当前目录创建docker-compose.yml

version: '3'
services:
    eureka:  #指定服务名称
        build: #指定Dockerfile所在路径
        ports:
            -"8761:8761"  #指定端口映射,类似docker run的-p选项,注意使用字符串形式
3.在docker-compose.yml所在路径执行命令
       docker -compose up

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值