SpringCloud学习Eureka笔记

微服务的特点
1.一系列微小的服务共同组成
2.跑再自己的进程里
3.每个服务为独立的业务开发
4.独立部署
5.分布式的管理
6.异构,可以是不同语言不同数据库

微服务必然是分布式的
分布式定义:
旨在支持应用程序和服务的开发,可以利用物理架构,由多个自治的处理元素,不共享主内存,但通过网络发送消息合作。

微服务架构的基础框架/组件
1.服务注册发现
2.服务网管(链接内外的大门,让前端发现,有路由的功能,还有限流、容错、监控等)
3.后端通用服务
4.前端服务(通过查询注册表,寻找后端服务)

springcloud是什么
1.Springcloud是一个开发工具集,含了多个子项目
利用springboot开发遍历
主要是基于对Netflix开源组件的进一步封装
2.作用:简化了分布式开发,掌握如何使用,更要理解分布式、架构的特点

springcloud Eureka
基于Netflix Eureka做了二次封装
两个组件组成:
EurekaServer 注册中心
EurekaClient 服务注册

创建eureka实例
new project-> SpringInitializr -> 填group和artifact ->选择Cloud Discovery - EurekaServer Springboot2.0.4 ->选择路径 -> 完成    
注意:可以去官网http://projects.spring.io/spring-cloud/查springboot和springcloud版本是否相对应
在创建的项目启动类上加注解@EnableEurekaServer,这样代表了你有这个注册中心
直接启动会报错:
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused)
在application.yml中加上
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8080/eureka
这样刚开始启动的时候还是会报错,因为服务端注册端是同时启动的,所以在他将他自己注册的时候还是报错,但是当启动好之后,注册端再次自动请求就成功了,可以在 localhost:8080中看到结果。这样的时候会开启他的自我保护机制,页面上会有一行红字,要加上一个配置,变成下面:
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    register-with-eureka: false
  server:
    enable-self-preservation: false
这种关闭自我保护只能再开发环境中关闭。

spring:
  application:
    name: eureka
这一段可以更改名字
或者直接使用下面停止他的注册,并且不获取注册信息,就不会报错了
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

接下来创建一个client项目,进行注册
new project-> SpringInitializr -> 填group和artifact ->选择Cloud Discovery - EurekaDiscovery Springboot2.0.4 ->选择路径 -> 完成    
创建完成后要再pom里面加一个依赖,否则会报错
        
            org.springframework.cloud
            spring-cloud-starter-eureka
            1.2.6.RELEASE
            
                
                    org.apache.httpcomponents
                    httpclient
                

            

        

在启动项中加上注解:
@EnableDiscoveryClient
在yml中加上下面的配置,告诉他往哪个注册中心注册
eureka:
    client:
        service-url:
            defaultZone: http://localhost:8761/eureka/
如果要该这个client的名字,加上下面这一段,不然就是UNKNOW
spring:
  application:
    name: client

启动后就能在localhost:8080中看到这个注册

如果一个eureka挂掉了那整个就炸了,所以可以再搞一个eureka将两个eureka关联起来,就可以相互使用
比如,两个项目中,一个的注册空间是
defaultZone: http://localhost:8762/eureka/
但是启动的端口是8761
另一个注册空间改为
defaultZone: http://localhost:8761/eureka/
启动的端口使用8762
这样就相互注册了
这样,一个里面注册过的,另一个里面也会看到,并且如果一个挂掉了,另一个也是会在的
如果给client里面的defaultZone注册两个地址defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ 这样即使client重启也没关系
如果三个eureka的话就两两注册,就是在eureka中defaultZone中有两个地址,client端配上2个

Eureka就是分布式服务中最主要的注册中心,无论是什么服务,都通过eurekaserver去找

常用命令:
mvn打包: mvn clean package
Jar包后台运行: nohup java -jar target/eureka-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 &
查看运行结果: ps -ef |grep eureka
停止进程 kill -9 3141

你可能感兴趣的:(java)