一、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. Spark安装过程纪录

    1 Scala安装 1.1 master 机器 修改 scala 目录所属用户和用户组. sudo chown -R hadoop:hadoop scala 修改环境变量文件 .bashrc , 添加 ...

  2. 第五次Scrum冲刺

    第五次Scrum冲刺 1.成员今日完成情况 队员 今日完成任务 刘佳 前端初步构建 李佳 后端设计初级阶段 周世元 数据设计 杨小妮 博客编写 许燕婷 管理团队当日及次日任务 陈水莲 测试矩阵用例设计 ...

  3. python判断任务是CPU密集型还是IO密集型

    目前已经知道,在需要并发执行任务的时候,需要使用多线程或者多进程;如果是IO密集型任务,使用多线程,如果是CPU密集型任务,使用多进程;但问题是,经常我们会遇到一种情况就是:需要被执行的任务既有IO操 ...

  4. JAVA程序员常用英语

    JAVA程序员常用英语 干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难.这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这 ...

  5. ceph部署手册

    CentOS7.2部署Luminous版Ceph-12.2.0 在CentOS7.2上安装部署Luminous版Ceph-12.2.0.由于ceph的Luminous版本默认使用bluestore作为 ...

  6. 十分钟搞定pandas

    转至:http://www.cnblogs.com/chaosimple/p/4153083.html 本文是对pandas官方网站上<10 Minutes to pandas>的一个简单 ...

  7. struts原理图

    n the diagram, an initial request goes to the Servlet container (such as Jetty or Resin) which is pa ...

  8. 深入理解hello world

    阅读目录 为什么所有东西都是从类开始的 为什么总是需要有一个“main”方法 HelloWorld的字节码 HelloWorld在JVM中是如何运行的 对于每个Java程序员来说,HelloWorld ...

  9. Numpy random arange zeros

    seed( ) 用于指定随机数生成时所用算法开始的整数值. .如果使用相同的seed( )值,则每次生成的随即数都相同: .如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间 ...

  10. java程序重要节点

    1.前台页面 2.前台页面到controller层跳转 和controller层的承上启下(jsp页面和java程序的桥梁) 3.serviceIpmle 程序处理的逻辑层 3.mybatis操作数据 ...