springcloud初见

微服务简介

随着互联网的技术不断发展,用户量不断增加,一个程序需要经受的并发量也越来越大,所以那些原来的传统架构已经无法抗住强大的并发量,所以微服务的概念流行开来,他将原来传统的集中式项目拆分出来,将一个项目模块,设置是一个业务场景都可以拆分成一个一个的微服务,将这些服务微分后,来实现对并发量承受;

微服务架构

微服务架构是一种架构模式,它提倡将单一的应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值,每个服务运行在气独立的进程中,服务与服务之间采用轻量级的通信机制互相协作(通常基于HTTP协议的RESTful api)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生成环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行开发;

1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)
2)独立的进程(java的tomcat,nodejs等)
3)轻量级的通信(不是soap,是http协议)
4)基于业务能力(类似用户服务,商品服务等等)
5)独立部署(迭代速度快)
6)无集中式管理(无须统一技术栈,可以根据不同的服务或者团队进行灵活选择)

微服务技术维度

在了解微服务的架构特点后,我们需要了解,一个微服务架构需要具有以下的技术

  1. 服务注册与发现:每个微服务可以发现其他微服务的地址信息
  2. 服务调用: 每个微服务可以调用其他微服务的api
  3. 服务熔断: 在调用时候,被调用方宕机后,将其熔断,保护自己
  4. 负载均衡: 微服务都是一个集群,所以当一个服务调用其他服务集群时候,需要负载均衡的调用其他服务
  5. 服务降级: 也是出现在服务调用的场景,在被调用方宕机后,立马返回一个失败页面,或者其他的页面情况
  6. 服务消息队列: 利用消息队列,将同步调用,该为异步来提升程序效率
  7. 配置中心管理: 每个微服务的配置 都配置在项目中的话,那么后面需要变更的话,就会比较麻烦,所以如果将其统一部署在一个配置中心中,微服务拉取配置信息的话,就会比较方便了
  8. 服务网关: 在微服务架构中,服务是不可以暴露自己的地址信息的,不然容易被攻击,所以这个时候,我们需要一个网关,对外提供访问
  9. 服务监控: 微服务一般都是集群,所以一个项目微服务比较多的时候,就需要一个来监控每个服务的健康情况
  10. 全链路追踪: 微服务一般都是集群,所以一个项目微服务比较多的时候,需要一个来追踪每个微服务的情况
  11. 自动化构建部署: 微服务都是单个的项目,所以用传统的部署的话,是比较麻烦的,所以需要一个工具,来实现自动部署
  12. 服务定时任务调度: 微服务中有的业务场景会实现定时任务;

微服务实现

在我们上面提到过微服务的技术维度后,那么看上去要实现这些是比较麻烦的,确实比较麻烦,但是我们的spring官方,退出了springcloud来实现这些功能;通过一个一个的组件让这些的实现比较简单,我们需要做的是选择合适的组件即可;
springcloud目前组件介绍:

Netflix公司开源的组件

这是在springcloud发布后的推出的第一套官方组件,是比较方便使用的一套组件

  1. 服务发现——Netflix Eureka
  2. 客服端负载均衡——Netflix Ribbon
  3. 断路器——Netflix Hystrix
  4. 服务网关——Netflix Zuul
  5. 分布式配置——Spring Cloud Config
    这套组件的使用与实现后续文章中会详细提到实现,这是一套很火爆的组件实现,简单的完成一个复杂的微服务架构,但是可惜 Netflix 已经开始停止对其开源更新了,所以现在很多公司开始使用其他的组件

springcloud alibaba

这是阿里基于springcloud开发的一套组件,比较特殊的是,这套组件中,服务间的相互调用的采用是修改后的Openfegin

  1. Sentinel 阿里巴巴开源产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  2. Nacos 阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  3. RocketMQ Apache RocketMQ™ 基于 Java 的高性能、高吞吐量的分布式消息和流计算平台。
  4. Open fegin 远程调用
  5. Seata 阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案

这套组件在Netflix 公司停更后,受到很多大公司的追捧使用,也是一套不错的开源组件,注意dubbo的使用是需要配置 zookeeper

spring官方组件

在Netflix 停更后,官方也退出了一些组件来代替

  1. consul 服务注册中心,来代替原有的Eureka
  2. gateway 网关 来代替原有的Zuul
  3. fegin 远程调用
  4. hystrix 服务熔断
  5. ribbon 负载均衡

其他

当然这些是目前我在项目中常用的一些组件,一些比较大的公司会自身开发微服务组件的,但是以上这些都是开源中比较常用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值