发表于: 2019-11-16 19:39:27

1 1164


一、今天完成的事

1.学习svn

1.idea中subversion选项作用

上传项目的时候(maven项目)不要把target这个上传上去,服务器内存大点还好,否则非常慢,设置如下图

进入设置属性中然后选择如下图:

2.svn目录结构

Subversion有一个很标准的目录结构,是这样的。比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是

 svn://proj/  |  +-trunk   +-branches    +-tags  这 是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使 用,svn并没有明确的规范,更多的还是用户自己的习惯。  对于这几个开发目录,一般的使用方法有两种。我更多的是从软件产品的角度出发 (比如freebsd),因为互联网的开发模式是完全不一样的。

  1. 1.0开发,做 dev1.0的branch

    此时的目录结构 svn://proj/ +trunk/ (不担负开发任务 ) +branches/  +dev_1.0 (copy from trunk) +tags/

  2. 1.0开发完成,merge dev1.0到trunk

    此时的目 录结构 svn://proj/ +trunk/ (merge from branch dev_1.0) +branches/   +dev_1.0 (开发任务结束,freeze) +tags/

  3. 根据trunk做1.0的tag

    此时的目录结构 svn://proj/ +trunk/ (merge from branch dev_1.0) +branches/  +dev_1.0 (开发任务结束,freeze) +tags/  +tag_release_1.0 (copy from trunk)

  4. 1.0开发,做dev2.0分支

    此时的目录结构 svn://proj/ +trunk/ +branches/  +dev_1.0 (开发任务结束,freeze)  +dev_2.0 (进行2.0开发) +tags/  +tag_release_1.0 (copy from trunk)

  5. 1.0有bug,直接在dev1.0的分支上修复

    此时的目录结构 svn://proj/ +trunk/ +branches/  +dev_1.0 (1.0bugfix)  +dev_2.0 (进行2.0开发) +tags/  +tag_release_1.0 (copy from trunk)

  6. 选择性的进行代码merge

 这其实是一种分散式的开发,当各个部分相对 独立一些(功能性的),可以开多个dev的分支进行开发,这样各人/组都不会相互影响。比如dev_2.0_search和dev_2.0_cache 等。但是这样merge起来就是一个很痛苦的事情。

 这里要注意一下的,第六步进行选择性的merge,是可以当2.0开发结束后一起把 dev_1.0(bugfix用)和dev_2.0(新版本开发 用)merge回trunk。或者先把dev_1.0 merge到dev_2.0,进行测试等之后再merge回trunk。   这两种方法各有利弊,第一种方法是可以得到一个比较纯的dev_2.0的 开发分支,而第二种方法则更加的保险,因为要测试嘛。

2.springcloud

1.Eureka

EurekaNetflix 开发的,一个基于 REST 服务的,服务注册与发现的组件

它主要包括两个组件:Eureka Server 和 Eureka Client

  • Eureka Client:一个Java客户端,用于简化与 Eureka Server 的交互(通常就是微服务中的客户端和服务端)

  • Eureka Server:提供服务注册和发现的能力(通常就是微服务中的注册中心)

各个微服务启动时,会通过 Eureka Client 向 Eureka Server 注册自己,Eureka Server 会存储该服务的信息

也就是说,每个微服务的客户端和服务端,都会注册到 Eureka Server,这就衍生出了微服务相互识别的话题

  • 同步:每个 Eureka Server 同时也是 Eureka Client(逻辑上的) 多个 Eureka Server 之间通过复制的方式完成服务注册表的同步,形成 Eureka 的高可用

  • 识别:Eureka Client 会缓存 Eureka Server 中的信息 即使所有 Eureka Server 节点都宕掉,服务消费者仍可使用缓存中的信息找到服务提供者(笔者已亲测)

  • 续约:微服务会周期性(默认30s)地向 Eureka Server 发送心跳以Renew(续约)信息(类似于heartbeat)

  • 续期:Eureka Server 会定期(默认60s)执行一次失效服务检测功能 它会检查超过一定时间(默认90s)没有Renew的微服务,发现则会注销该微服务节点

Spring Cloud 已经把 Eureka 集成在其子项目 Spring Cloud Netflix 里面

2.导入依赖

<dependencies>
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
       <version>2.1.0.RELEASE</version>
   </dependency>
</dependencies>

3.EurekaServerApplication

EurekaServer 启动类。 这是一个 EurekaServer ,它扮演的角色是注册中心,用于注册各种微服务,以便于其他微服务找到和访问。 所以 Eureka 这个单词是 “找到啦” 的意思。 EurekaServer 本身就是个 Springboot 微服务, 所以它有 @SpringBootApplication 注解。 @EnableEurekaServer 表示这是个 EurekaServer 。

package com.ksy.springcloud;

import cn.hutool.core.util.NetUtil;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
* Hello world!
*
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

   public static void main(String[] args) {
       int port = 8761;
       if(!NetUtil.isUsableLocalPort(port)){
         System.err.printf("端口%d被占用了,无法启动%n",port);
         System.exit(1);
       }
       new SpringApplicationBuilder(EurekaServerApplication.class).properties("server.port=" + port).run(args);
   }
}

4.application.properties

eureka.instance.hostname=127.0.0.1
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring.application.name=eureka-server
  • hostname: localhost 表示主机名称。

  • registerWithEureka:false. 表示是否注册到服务器。 因为它本身就是服务器,所以就无需把自己注册到服务器了。

  • fetchRegistry: false. 表示是否获取服务器的注册信息,和上面同理,这里也设置为 false。

  • defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 自己作为服务器,公布出来的地址。 比如后续某个微服务要把自己注册到 eureka server, 那么就要使用这个地址: http://localhost:8761/eureka/

  • name: eurka-server 表示这个微服务本身的名称是 eureka-server

这就是注册中心的管理界面,主要看 :Instances currently registered with Eureka, 可以发现信息是:No instances available。 这表示 暂时还没有微服务注册进来。

二、遇到的问题

弟弟行为。。。安装navicat装一天

三、收获

四、明天的计划

注册数据微服务,服务链路追踪



返回列表 返回列表
评论

    分享到