spring-boot实践

spring-boot简介

优点

  • 基于spring4以上,简化spring开发的生态
  • 提倡注解,集成方便简单,很好的处理了依赖问题
  • 组件集成功能,注解等更加完善,同时也是spring-cloud的基础
  • 支持jar启动,改善运维能力

缺点

  • 使用简单,学习难度增加,用好用灵活不是很简单

最佳实践

  • 全面采用javaconfig,方便的yml配置等
  • 使用spring-boot组件,如starter,@EnableReids等集成通用模块不在原来的spring基础上更进一步支持简单业务处理,甚至是controller,比较类似 spring-cloud-zuul其实就是一个spring-boot服务

自定义spring-boot starter

  • @Conditional等注解 决定什么时候去启用
  • https://docs.spring.io/spring-boot/docs/1.5.6.RELEASE/reference/htmlsingle/#boot-features-developing-auto-configuration
  • 例子
monitor-common

MonitorAutoConfiguration

进一步简化封装

  • 如何处理web层通用异常
  • 如何处理dubbo层异常
  • 如何避免swagger重复引用

groot commmon

  • 统一api基础使用规范
  • 屏蔽web层封装,简单处理统一异常

目前项目集成简单梳理

  • 例子

优点

  • 方便简单, 处理重复不必要的copy工作

  • 可能扩展性不够,需要持续优化

目前的架构

缺点

  • 网关根据ip+port转发,无服务发现能力
  • dubbo目前xml形势,非常不利于集成

upms例子

  • 需要引入dubbo xml配置,引入jar包
  • 理想模型,和springboot一样引入jar,配置yml就可以
  • 需要可以加入@EnableUpms这样的注解更方便控制

怎么做

// 提供一套dubbo-spring-boot-starter

服务发现

  • 我们有必要花一些时间来了解一下Eureka的元数据,这样就可以添加一些自定义的数据以适应特定的业务场景。像主机名、IP地址、端口号、状态页url和健康检查url都是Eureka定义的标准元数据。这些元数据会被保存在Eureka Server的注册信息中,客户端会读取这些数据来向需要调用的服务直接发起连接。你可以使用以eureka.instance.metadataMap开头的参数来添加你自定义的元数据,所有客户端都会读取到该信息。通过这种方式你能给客户端自定义一些行为。
spring-boot实践_第1张图片
image.png

配置中心

spring-boot实践_第2张图片
image.png
  • 当前业务系统不是很多,管理还是可以控制
  • 当一个集群有几百台,修改配置是一件很麻烦的事情
  • 配置中心的优势,配置变量的灰度就有了很大的优势
  • 推荐: https://github.com/ctripcorp/apollo
  • 演示

spring cloud

spring-boot实践_第3张图片
image.png

spring cloud微服务最小组件

  • 服务发现 spring cloud eureka
  • 负载均衡 spring cloud ribbon
  • http客户端 spring cloud feign
  • 服务隔离、熔断(也可以称为断路)、降级等 spring cloud hystrix 【可选】
  • 服务链路追踪 Spring Cloud Sleuth 【可选】

对于整个分布式系统

  • 分布式任务系统
  • 监控等

目前现状

  • springboot + dubbo

问题

  • 没有完善的dubbo测试工具,有的可能需求提供两套接口
  • 现有公司的业务的高可用 其实在一套架构下就可以支持
  • 如果切换到cloud,需要一套规范,使用规范等,如何定义

你可能感兴趣的:(spring-boot实践)