SpringCloud从看不懂到放弃,第一章
内容简述:
1、Springcloud入门概述
2、Rest微服务构建案例工程
3、服务注册与发现Eureka
4、Ribbon负载均衡
5、Feign负载均衡
6、Hystrix断路器
7、Zuul路由网关
8、SpringCloud Config分布式配置中心
一、SpringCloud入门概述
1、什么是微服务
提倡将单一的应用程序划分成一组组小的服务。每个服务运行在其独立的自己的进程中。服务间互相协调、互相配合。
服务之间采用轻量级的通讯机制互相沟通(dubbo是RPC、SpringCloud是基于HTTP的restful api)。
每个服务都围绕着具体的业务进行构建,都能部署到独立的生产环境中。
(根据业务拆分成一个个的服务,彻底的去耦合)
2、微服务的优缺点是什么?以及在项目开发中碰到的坑
优点:
每一个服务专注聚焦于一个指定的业务功能和需求
松解耦的
各服务间可以用不同的语言
前后端分离
灵活搭配的数据库:自己的数据库+统一的公共数据库
缺点:
服务间通讯成本增加
数据一致性
运维难度增加等
3、微服务的技术栈有哪些
服务开发 springboot、spring、springmvc等
服务配置与管理 Netflix公司的Archaius、阿里的Diamond
服务注册与发现 Eureka、Consul、zookeeper
服务调用 Rest、RPC、gRPC
服务熔断器 Hystrix(dashboard服务监控)、Envoy
负载均衡 Ribbon、Nginx
服务接口调用 Feign
消息队列 kafka、RabbitMq、ActiveMq
服务配置中心管理 SpringCloudConfig、Chef
服务路由 Zuul
服务监控 Zabbix、Nagios、Metrics、Spectator
全链路追踪 Zipkin、Brave、Dapper
服务部署 Docker、Openstack、Kubernetes
数据流操作开发包 SpringCloud Stream(封装与Redis\Rabbit\kafka等发送接收消息)
事件消息总线 SpringCloud Bus
4、springcloud和dubbo有哪些区别
Dubbo SpringCloud
注册中心 zookeeper Eureka
调用方式 RPC REST API
服务监控 Dubbo-monitor SpringBoot Admin
断路器 ------- Hystrix
服务网管 Zuul
分布式配置 SpringCloud config
服务跟踪 SpringCloud Sleuth
消息总线 SpringCloud Bus
数据流 SpringCloud stream
批量任务 SpringCloud Task
。。。。 。。。。。。。 。。。。。。。
dubbo服务治理
官网
https://spring.io/projects/spring-cloud
https://springcloud.cc 中文社区
https://springcloud.cn 中文官网
二、Rest微服务构建案例工程
以Dept部门模块做一个微服务通用案例、Consumer消费者[client]通过rest调用Provider提供的服务
结构
cloud:
cloud-api 封装整体entity、接口和 公共配置等
cloud-provider-dept-8001 微服务的服务提供者
cloud-consumer-dept-80 微服务的服务消费者
1、父工程
new maven project
groupID com.lee
artifact id cloud
packaging pom
POM
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lee</groupId>
<artifactId>cloud</artifactId>
<version>1.0-SNAPSHOT</version>
<!--重要POM-->
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
</properties>
<dependencyManagement>
<dependencies>
<!--cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</