一、springboot cloud

  1.maven 配置

    parent:org.springframework.boot:sping-boot-starter-parent

    dependencies:spring-boot-starter-test、config、eureka、eureka-server、feign、devtools

  2.@SpringBootApplication

  3.cloud注册中心:

    @EnableEurekaServer

    配置文件:server.port=1111

           eureka.client.registerWithEureka=false

           eureka.client.fetchRegistry=false

         eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

  4.cloud生产者

    @EnableDiscoveryClient

    配置:server.port=1112

       spring.application.name=生产者名称

          eureka.client.serverUrl.defaultZone=http://localhost:1111/eureka/

  5.cloud消费者

    方式一:Ribbon + RestTemplate

    @EnableDiscoveryClient // app

    @Bean

    @LoadBalanced // 负载均衡

    RestTemplate restTemplate(){

      return new RestTemplate();

    }

    @RestController //controller

    @RequstMapping(value="/first") //controller方法

    @ResponseBody //controler方法

     实现方法:retrun restTemplate.getForEntity("http://生产者名称/first").getBody();

    方式二:Feign  是一个声明式的伪Http客户端,它使得写Http客户端变得更简单

    @EnableFeignClients //App

    @FeignClient(name="生产者名称") // 接口

    @RequestMapping(method=RequestMethod.GET, value="/value") // 接口方法

  6.断路器:Hystrix
    如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务

    瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应

    1.Ribbon + RestTemplate

      @EnableHystrix // 启动类

      @HystrixConmmad(fallbackMethod="hiError")

      hiError方法

    2.Feign

      feign.hystrix.enable=true

      @FeignClient(value="服务名", fallback=处理Hystric的类.class) // 接口类

      处理Hystric的类 implements 接口类

    3.Hystrix Dashboard 断路器仪表盘

      依赖spring-cloud-starter-hystrix-dashboard

      @EnableHystrixDashboard // 启动类

      访问http://ip:port/hystrix 点击monitor stream

   7.Zuul:主要功能是路由转发和过滤器

    1.路由转发

    @EnableZuulProxy //启动类

    server.port=8769

    zuul.routes.api-a.path=/api-a/**

    zuul.routes.api-a.serviceId=service-ribbon

    zuul.routes.api-b.path=/api-b/**

    zuul.routes.api-b.serviceId=service-feign

    访问http://ip:8769/api-a/转发到service-ribbon

    访问http://ip:8769/api-b/转发到service-feign

    2.zuul服务过滤

    过滤类 extends ZuulFilter,覆盖filterType,filterOrder,shouldFilter,run方法

    filterType:pre路由之前 | routing路由之时 | post路由之后 | error

    filterOrder:过滤顺序

    shouldFilter:是否过滤

    run:过滤逻辑

    

  8.Config:在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件

    1.Config Server

    @EnableConfigServer // 启动类

    spring.cloud.config.server.git.uri=仓库地址

    spring.cloud.config.server.git.searchPaths=仓库路径

    spring.cloud.config.label=分支

    spring.cloud.config.server.git.username=用户名

    spring.cloud.config.server.git.pathword=密码

    2.Config Client

    spring.cloud.config.label=master

    spring.cloud.config.profile=dev

    spring.cloud.config.url=config server的网址

  9.高可用分布式配置中心,将配置中心做成一个微服务,将其集群化,从而达到高可用

    1.eureka-server 8889

    eureka.instance.hostname=

    eureka.client.registerWithEureka=false

    eureka.client.fetchRegistry=false

    eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

    @EnableEurekaServer

    2.改造Config Server 8888

    eureka.client.serviceUrl.defaultZone=http://eureka-server:8889/eureka

    @EnableEureka // 启动类

    3.改造Config Client  

    注掉url

    eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/

    spring.cloud.config.discovery.enabled=true // 从配置中心读取

    spring.cloud.config.discovery.serviceId=config-server // 配置中心服务名

  10.Bus 消息总线:将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控

    1.依赖spring-cloud-starter-bus-amqp 下载rabbitmq

    spring.rabbitmq.host=localhost

    spring.rabbitmq.port=5672  

  11.Sleuth 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控

  12.高可用的服务注册中心

  12.Docker:是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器

    添加插件:Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。

    FROM:是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器

    VOLUME:使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器。

    ADD:从src目录复制文件到容器的dest

    ENTRYPOINT:指定Docker容器启动时执行的命令,可以多次设置,但是只有最后一个有效。

    EXPOSE:为Docker容器设置对外的端口号

    docker run -p port:port -t xxx

    docker-compose up

    docker-compose -f docker-compose.yml -f docker-compose-dev.yml up

    

    

  

     

  

    

    

  

    

      

二、Spring Boot

  简化新Spring应用的初始搭建以及开发过程

  1.特点

    1. 创建独立的Spring应用程序
    2. 嵌入的Tomcat,无需部署WAR文件
    3. 简化Maven配置
    4. 自动配置Spring
    5. 提供生产就绪型功能,如指标,健康检查和外部配置
    6. 绝对没有代码生成和对XML没有要求配置

    

  

    

    

java 知识汇总的更多相关文章

  1. Java知识汇总——思维导图

    转载:https://www.cnblogs.com/java1024/p/8757952.html Java知识点汇总,从基础到常用的API.还有常用的集合类,总结的很详细.图片是从论坛里面找到的, ...

  2. java知识汇总

    文章目录 Java基础知识 基本类型 类别及其对应包装类 1. byte---Byte 2. char---Character 3. short---Short 4. int---Integer 5. ...

  3. Java快速入门-03-小知识汇总篇(全)

    Java快速入门-03-小知识汇总篇(全) 前两篇介绍了JAVA入门的一系小知识,本篇介绍一些比较偏的,说不定什么时候会用到,有用记得 Mark 一下 快键键 常用快捷键(熟记) 快捷键 快捷键作用 ...

  4. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  5. JAVA基础知识之面向对象编程知识汇总

    JAVA基础课程部分面向对象已经学习完成,知识结构如下: 总体知识框架: 类的结构: 面向对象编程三大特征: 关键字和抽象类接口等: 常见知识汇总: 成员变量和局部变量比较 有无返回值方法比较: 权限 ...

  6. Oracle手边常用70则脚本知识汇总

    Oracle手边常用70则脚本知识汇总 作者:白宁超 时间:2016年3月4日13:58:36 摘要: 日常使用oracle数据库过程中,常用脚本命令莫不是用户和密码.表空间.多表联合.执行语句等常规 ...

  7. JSP知识汇总

    JSP知识汇总 一.简介 > HTML - HTML擅长显示一个静态的网页,但是不能调用Java程序. > Servlet - Servlet擅长调用Java程序和后台进行交互,但是它不擅 ...

  8. 谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解(转载)

    相关参考文章: 谈谈自己对REST.SOA.SOAP.RPC.ICE.ESB.BPM知识汇总及理解 微服务SOA架构与RPC远程过程调用 SOA和微服务架构的区别 SOA: 维基百科解释:SOA:面向 ...

  9. web前端project师知识汇总

    分类: Web开发应用  一.何为Web前端project师?           前端project师,也叫Web前端开发project师.他是随着web发展.细分出来的行业.Web前端开发proj ...

随机推荐

  1. [原创]delphi一次性批量在TScrollBox中显示N个复选框TCheckBox的源码

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  2. tkinter绑定鼠标滚轮滚动事件 canvas.bind("<MouseWheel>", processWheel) 失效

    其实,不同系统不一样,我的是Ubuntu 所以是<Button-4>   <Button-5> 见下: 来自:https://stackoverflow.com/questio ...

  3. jQuery之dom操作(取赋值方法)

    取赋值相关方法:                   .html() .text() .size()                   .addClass() .removeClass() .has ...

  4. js高级-原型链

    JavaScript是基于原型的面向对象的语言(相当于一个基类,父类),而不是像Java通过类模板构造实例,通过原型实现属性函数的复用 函数都有 prototype属性 指向函数的原型对象 只有函数根 ...

  5. 基于docker的wekan部署

    镜像地址: https://hub.docker.com/r/wekanteam/wekan/ wiki: https://github.com/wekan/wekan/wiki#Developmen ...

  6. find命令归总

    -amin n  (主要指是否被读取过)对文件的最近一次访问是在 n 分钟之前. 例如:find /opt/* -amin 1 -type f  (找出1分钟之前的/opt下的所有文件) -atime ...

  7. 使用synchronized wait() notifyall() 实现简单的加减法同步 竞争抢答

    import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.co ...

  8. JMeter学习(三)元件的作用域与执行顺序(转载)

    转载自 http://www.cnblogs.com/yangxia-test 1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它 ...

  9. Android学习路-Android Studio的工程目录

    说明:下图为一个app的工程目录,如果在res下随便建立文件夹(比如test等名字)是不会显示在工程内的

  10. 在 Android Studio 上调试数据库 ( SQLite ) (转)

    转自:http://c.colabug.com/thread-1781696-1-1.html 以前 Eclipse 时代,调试 SQLite 都是将数据库文件导出到电脑,然后再用软件打开查看.现在我 ...