七天构建SpringCloud集群

day3:集群启动

Posted by 月白 on Sunday, October 3, 2021

项目地址:jiuzhou (九州) https://github.com/yuebaix/jiuzhou

一、完成服务注册功能

1.引入zookeeper、spring-cloud-starter-zookeeper-discovery依赖

ext {
    zookeeperVersion = '3.7.0'
}

dependencyManagement {
    dependency "org.apache.zookeeper:zookeeper:${zookeeperVersion}"
}

dependencies {
    implementation('org.springframework.cloud:spring-cloud-starter-zookeeper-discovery') {
        exclude group: 'org.apache.zookeeper', module: 'zookeeper'
    }
    implementation ('org.apache.zookeeper:zookeeper') {
        exclude group: 'org.slf4j', module: 'slf4j-log4j12'
    }
}

2.配置文件application.properties添加服务发现配置

spring.application.name=app-bizagg

spring.cloud.inetutils.preferredNetworks[0] = 192
#spring.cloud.inetutils.preferredNetworks[1] = 172

spring.cloud.zookeeper.connect-string=localhost:12181
spring.cloud.zookeeper.discovery.enabled=true
spring.cloud.zookeeper.discovery.register=true
spring.cloud.zookeeper.discovery.root=/jiuzhou
spring.cloud.zookeeper.discovery.instance-host=${spring.cloud.client.ip-address}

server.port=12201

3.启动类添加服务发现注解 @EnableDiscoveryClient

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

4.改动变更到所有服务并进行启动测试

二、完成swagger文档功能

1.添加swagger文档相关gradle配置

implementation 'io.swagger:swagger-annotations'
implementation 'io.swagger:swagger-models'
implementation 'io.springfox:springfox-boot-starter'

2.添加swagger配置文件

@Configuration
@EnableOpenApi
@Slf4j
public class SwaggerConfig {
    @Bean("DefaultDocket")
    @ConditionalOnMissingBean(Docket.class)
    public Docket defaultDocket() {
        return new Docket(DocumentationType.OAS_30)
                .groupName("default")
                .apiInfo(apiInfo())
                .useDefaultResponseMessages(false)
                //.pathMapping(socialGraphServiceProperties.getContextPath())
                .select()
                //扫描注解了@ApiOperation的方法生成API接口文档
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("ApiDoc")
                .contact(new Contact("yuebaix", "https://github.com/yuebaix", "yuebaix@outlook.com"))
                .version("1.0.0")
                .description("ApiDoc generated by jiuzhou")
                .build();
    }
}

3.改动变更到所有服务并进行启动测试

http://localhost:12001/swagger-ui/

http://localhost:12001/doc.html

三、开发日志

  • 1.apollo-quick-start PR 反馈

今天apollo-quick-start的PR被宋顺老师反馈了,对问的问题做了一些解释。根据提的要求重新修改了下代码,顺便添加了环境变量自定义数据库密码的变更。 继续等待反馈……

  • 2.hugo-theme-cleanwhite 新讨论

希望博客能添加back-to-top功能,于是到赵化冰老师的仓库提了一个讨论issue,被反馈最近新增了侧边栏catalog功能,可以用这个代替。回复“肥肠奶司”…… 后续添加了一个谁在使用的讨论issue,赵化冰老师同意了,于是我参照ApiSix编辑了一份markdown文档发给了他,期待不久能看到置顶issue,毕竟hugo圈子里 对中文网站风格友好的主题不太多,可以站出来分享给更多需要的人。

  • 3.开始开发服务注册

开始开发服务注册,马上要启动一堆的服务,本机内存到时候估计捉襟见肘,想了下,全周期的过程中只有zk是必须的,其他的就先停着吧,最后把其他组件启动起来 测试一轮就OK

  • 4.国庆的两种人

据我观察,开发大牛们国庆期间有两种人。一种是结婚的……比如spring cloud alibaba的开源负责人,朋友圈发了结婚的照片,应该年纪也不小了才结婚,想想 自己可能是不是也不用着急;一种是在github上活跃的,我都没期待这几天他们能有啥反馈,结果今天各位能回复的都回复了,看了下各位强人不少人跟我一样在家 里还在写代码。勤奋是YOLO精神(you only live once)的一剂良药。

  • 5.感慨ApiSix的社区很规范

apache整个社区的成功不仅是开源精神所引领,而且各种制度都比较完备,像contributor -> committer -> mentor -> pmc这样的晋升,还有项目孵化 准入到后续维护,背后需要付出很大的努力。说白了开源就是干活,有了社区规则跟运营规范,可以保证项目长期进行下去并且不会烂尾,能保证产品能真正做起来。 每个人的时间是有限的,技术栈也是有限的。选对方向、选对社区比较重要。