【SpringCloud微服务】第1章 基础知识

1章 基础知识

1.1 什么是微服务架构

简单说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作

1.2 与单体系统的区别

系统会按照不同模块拆分成多个不同的服务,这些服务独立部署和扩展单一服务的更新,不会影响其他服务的运行,同时,由于是独立部署,我们可以更精准地为每个服务评估性能容量,通过配合服务间的协作流程,也可以更容易地发现系统的瓶颈位置,以及给出较为准确的系统级性能容量评估。

1.3 如何实施微服务

1.3.1 带来的新挑战

1.运维新挑战

运维人员需要维护的进程数大大增加,需要运维人员有一定的开发能力编排运维过程,并让它们能自动运行起来

2.接口的一致性

需要更完善的接口和版本管理,或是严格地遵循开闭原则(对于扩展是开放的,对于修改是关闭的)

3.分布式的复杂性

比如网络延迟,分布式事务,异步消息等

1.3.2 微服务的九大特征

1.服务组件化

每个服务像组件一样,是一个可以独立更换和升级的单元,且相互独立,在更新或升级的时候,并不影响其他单元。

2.按业务组织团队

①可以有效减少服务内部修改所产生的内耗;②团队边界可以变得更为清晰。

3.做产品的态度

每个成员应该以做产品的方式,对整个生命周期负责,而不是以项目的模式,以完成开发与交付,并将成功交给运维为终极目标。

4.智能端点与哑管道

    个人理解:哑管道即“交互方式比较单一”,依赖“智能端点”进行总的协调调度。这样单一的交互,实现了易读性,但是智能调度却消耗了系统的部分资源,使得系统性能的高效性受到影响。

更粗粒度的通信协议

①使用HTTPRESTful API或轻量级的消息发送协议,实现消息传递与服务调用的触发。

②通过在轻量级消息总线上传递消息,类似RabbitMQ等一些提供可靠异步交换的中间件

5.去中心化治理

不是每一个问题都是钉子,不是每一个解决方案都是锤子。

6.去中心化管理数据

①希望让每一个服务来管理其只有的数据库

②强调各个服务之间进行“无事务”的调用

③若在过程中发现错误,通过补偿机制来进行处理,使得错误数据能够达到最终的一致性

7.基础设施自动化

持续交付

自动化测试

自动化部署

8.容错设计

实现监控和日志记录的组件,比如服务状态、断路器状态、吞吐量、网络延迟等关键数据的仪表盘等。

9.演进式设计

从单体开始,逐渐拆分

 

1.3 SpringCloud简介

1.3.1 什么是SpringCloud

Spring Cloud 是一款基于Srping Boot实现的微服务架构开发工具

1.3.2 SpringCloud子项目

①Spring Cloud Config 配置管理工具;

Spring Cloud Netfix 核心组件,整合对个Netflix OSS开源套件;

 aEureka 服务治理组件(包含服务注册中心、服务注册与发现机制的实现);

 bHystrix 容错管理组件(实现短路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力);

 cRibbon 客户端负载均衡的服务调用组件;

 dFeign 基于RibbonHystrix的声明式服务调用组件;

 eZuul 网关组件(提供智能路由、访问过滤等功能);

 fArchaius 外部化配置组件;

Spring Cloud Bus 事务、消息总线(用于传播集群中的状态变化或事务,以触发后续的处理,比如用来动态刷新配置等);

Spring Cloud Cluster(针对ZookeeperRedisHazelcastConsul的选举算法和通用状态模式的实现);

Spring Cloud Cloudfoundry(与 Pivotal Cloudfoundry的整合支持);

Spring Cloud Consul(服务发现与配置管理工具);

Spring Cloud Stream(通过RedisRabbit或者Kafka实现的消费微服务,可以通过简单的声明式模型来发送和接受消息);

Spring Cloud AWS(用于简化整合Amazon Web Service的组件);

Spring Cloud Security安全工具包(提供Zuul代理中对OAuth2客户端请求的中继器);

Spring Cloud Sleuth Spring Cloud应用的分布式跟踪实现,可以完美整合Zipkin。其中zipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪);

Spring Zookeeper(基于Zookeeper的服务发现与配置管理组件);

Spring Cloud starttersSpring Cloud的基础组件,它是基于Spring Boot风格项目的基础依赖模块);

Spring Cloud CLI(用于在Groovy中快速创建Spring Cloud应用的Spring Boot CLI插件);

。。。

1.4 版本说明

①Spring Cloud版本采用了伦敦地铁站的名字,按照首字母排序的规则,进行命名的;

Cloud代号

Boot版本(train)

Boot版本(tested)

lifecycle

Angle

1.2.x

incompatible with 1.3

EOL in July 2017

Brixton

1.3.x

1.4.x

2017-07

Camden

1.4.x

1.5.x

-

Dalston

1.5.x

not expected 2.x

-

Edgware

1.5.x

not expected 2.x

-

Finchley

2.x

not expected 1.5.x

-

原著中的例子采用Brixton.SR5版本,基于Spring Boot 1.3.7版本;但是Brixton版本于2017-07已卒,故笔者采用的是Finchley.M8版本 + Spring Boot 2.0.0版本

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目说明 该项目是一个典型的由Spring Cloud管理的微服务项目,主要包括如下模块 micro-service-cloud─────────────────顶层项目 ├──cloud-service-core───────────────基础核心模块 ├──cloud-service-tools──────────────全局通用工具类 ├──cloud-service-reids──────────────Redis二次封装 ├──cloud-eureka-server──────────────服务注册中心[8761] ├──cloud-turbine-server─────────────断路器聚合监控[8769] ├──cloud-zipkin-server──────────────链路追踪监控[9411] ├──cloud-zuul-server────────────────第一代服务网关(Zuul)[8080] ├──cloud-gateway-server─────────────第二代服务网关(Gateway)[8080] ├──cloud-modules-app────────────────App微服务模块 ├───────modules-app-user────────────App用户服务模块[努力更新中] ├───────modules-app-doctor──────────App医生服务模块[努力更新中] ├──cloud-modules-service────────────微服务通用服务模块 ├───────mongodb-file-service────────Mongodb文件服务模块[11010] ├───────redis-delay-service─────────延迟消费服务模块[11020] ├──cloud-modules-web────────────────Web微服务模块 ├───────modules-web-security────────Web医生服务模块[12010] ├───────modules-web-user────────────Web用户服务模块[12020] ├──cloud-modules-wechat─────────────Wechat微服务模块 ├───────modules-wechat-user─────────Wechat用户服务模块[努力更新中] └───────modules-wechat-doctor───────Wechat医生服务模块[努力更新中] 修改日志 修改日志 修改人 修改日期 版本计划 V1.0 刘岗强 2019-01-07 项目初始化 V1.1 刘岗强 待定 新增自动问答 项目介绍 基于Spring Cloud Finchley SR2 Spring Boot 2.0.7的最新版本。 核心基础项目内实现类自定义的权限注解,配合RBAC权限模型+拦截器即可实现权限的控制,具体的参考项目中的实现。同时也封装了一些顶层类和结果集等。 注册中心实现高可用配置,详情见eureka的one、two、three三个配置文件,摘要如下。 ------------------------------------------配置节点一---------------------------------------------- server: port: 8761 spring: application: name: cloud-eureka-server eureka: instance: hostname: cloud.server.one prefer-ip-address: true instance-id: ${spring.cloud.client.ip-address}:${server.port}:${spring.application.name} client: healthcheck: enabled: true register-with-eureka: false fetch-registry: false service-url: defaultZone: http://cloud.server.two:8762/eureka/,http://cloud.server.three:8763/eureka/ ------------------------------------------配置节点二----------------------------------------------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值