springCloud学习笔记(一)

学习参考:

https://blog.csdn.net/eson_15/article/details/83585344

https://my.oschina.net/u/3244751/blog/2923421

第一节 分布式架构理解
1、单体应用:用户---电商系统---数据库  

2、单体应用采用分布式部署集群:负载均衡---电商系统1,2,3 ---主从库---缓存集群  适合百万数据量

 单体应用缺点:开发速度慢,启动时间长,依赖庞大

3、微服务:负载均衡,多个节点高可用 LVS+keepLive 负载分发 ---网关集群 APIGetway ----每个服务抽出来,商品服务,订单服务--商品数据库,订单数据库,数据库切分减少压力,也可以通过nosql数据库缓存

微服务优点:易开发,理解和维护,独立部署和启动等,缺点分布式事务处理,服务治理

第二节 核心组件理解

1、网关:路由转发+过滤器

/api/v1/product/  商品服务

/api/v1/order/ 订单服务

/api/v1/user 用户服务

2、注册中心:维护调用与被调用方的信息

3、配置中心:管理配置动态更新  例application.properties,有可视化管理后台方便管理

4、链路追踪:分析调用链路耗时

5、负载均衡:分发负载

6、熔断:开启后,保护自己和被调用方

第三节 常见开源微服务框架

consumer  调用方

provider 被调用方

1、dubbo: zookeeper + dubbo + springmvc/springboot
官⽅方地址:http://dubbo.apache.org/#!/?lang=zh-cn
配套
通信⽅方式:rpc(速度快)
注册中⼼心:zookeper/redis
配置中⼼心:diamond
2、springcloud: 全家桶+轻松嵌⼊入第三⽅方组件(Netflix 奈奈⻜飞)
官⽹网:http://projects.spring.io/spring-cloud/
配套
通信⽅方式:http restful  (http涉及三次握手协议速度比rpc慢)
注册中⼼心:eruka/consul
配置中⼼心:config
断路路器器:hystrix
⽹网关:zuul
分布式追踪系统:sleuth+zipkin
学习资料料:https://blog.csdn.net/zhangweiwei2020/article/details/78646252 

第四节 分布式应用知识CAP理论知识及注册中心选择

CAP定理:Consistency一致性,Availability可用性,Partition tolerance 分区容错性,三者不可同时 获得只能3选2,由于网络硬件肯定会出现延迟丢包等问题,所以分区容错性必须要实现,所以只能在一致性和可用性之间权衡利弊

一致性,所有节点在同一时间数据是完全一致的

可用性,服务一直可用,而且是正常响应时间内

分区容错性,高可用性,一个节点崩了并不影响其他节点

第五节  搭建注册中心

参考 springcloud 中文官方文档  https://springcloud.cc/spring-cloud-dalston.html#spring-cloud-eureka-server

创建父项目,子项目

https://blog.csdn.net/weixin_38970805/article/details/82463122

踩坑:

1、创建子项目时报错无法访问https://start.spring.io连接超时?

解决:https://blog.csdn.net/lidai352710967/article/details/81089305  参考网上解决办法都不好用,换个网络就好了。

2、eureka server下载依赖时报错java.lang.AbstractMethodError? 启动时报错java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder?

解决:都是springBoot版本问题,修改版本 改成2.1.3,保持父项目子项目版本一致。

3、application.properties 文件后缀改成 .yml,图标变成文本?

解决:idea设置  setting- Editor-File Types ,YAML选项里添加  *.yml ,应用-保存。

4、服务启动报错

java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'

org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1  ?

解决:yml文件编码格式问题,中文注释删除就能正常启动。

访问: 服务启动成功,localhost:端口号,即可访问。

第六节 常用服务间调用方式

RPC:远程调用,长链接,支持同步异步,客户端与服务端之间建立TCP连接,可以一次建立一个,也可以多个调用服用一个链接,数据包小(协议会用谷歌的protobuf),

编解码,序列化,链接,丢包,拆包,组合

Rest(HTTP):http请求,支持多种协议和功能,开发方便成本低,http数据包大

HttpClient , URLConnection(jdk 自带的)

* 练习商品服务,订单服务,将服务注册导注册中心上

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Lombok插件

作用解决代码冗余省去getset方法,idea下载插件 setting--plugins--Browose repositories ---搜索lombok---install,

踩坑:

1、配置文件里要设置依赖

maven父工程

springCloud学习笔记(一)_第1张图片

maven子工程

springCloud学习笔记(一)_第2张图片

2、idea安装lombok插件后要配置两个地方勾选了 File-setting-complier-Annotation Processors- 勾选Enable Annotation

Processing,File-setting-complier-Java complier - module bytecode version 版本都改成1.8 ,然后重启

springCloud学习笔记(一)_第3张图片

springCloud学习笔记(一)_第4张图片

 

3、注意jdk1.8版本和lombok1.18.12版本兼容问题,如果版本不兼容也会导致注解无法引入。

以上三点修改后重启idea,成功引入lombok注解

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(springCloud学习笔记(一))