SpringCloud小笔记

入门

1.在springboot基础上构建,快速构建分布式系统的工具集。
2. 优点:约定大于配置,开箱即用
3. 核心组件:
Netflix Eureka–基于Rest的服务治理–服务端用作服务注册中心,集群部署;
客户端处理服务注册与发现;
客户端向服务端注册服务信息,缓存服务信息到本地,心跳交互更新服务信息。
Netflix Ribbon–客户端负载均衡,服务通信
基于http和tcp,将rest请求变换为负载均衡服务
Netflix Hystrix–熔断器–断路器,控制故障范围
Netflix Zuul–服务网关–api网关,路由,负载均衡
通过api网关根据请求的url,路由到响应的服务。权限控制,将请求均衡发布到后台服务器
Netflix Feign–基于Ribbon和Hystrix的声明式服务,服务通信
config– 分布式配置–静态配置 bus–动态配置
Zipkin–服务跟踪
Actuator–服务监控

4.单体应用存在的问题:开发越来越复杂;耦合性高,修改新增某个功能,需要对整个系统测试,重新部署;一个模块出错,整体崩溃;容易产生安全问题;使用同一种技术,局限性高;交接时间长。
5. 集群:解决高负荷,增加服务器(物理层面)很多人干一件事分担压力–运维层
分布式:将一个复杂问题拆分成若干个小问题,最后整合(软件设计层面)–开发层
6. 微服务优点:独立(互不依赖)、自治(出现新需求不需要考虑其他因素)、自由(框架、语言不受限)
7. 互联网普及到互联网深耕
大数据,高并发,快响应

  • 分布式,也就是多节点,涉及到节点路由,管理,监控,协作,数据一致性,网络故障,丢包等问题
  • 微服务,是分布式系统实现方案的主流
  • 微服务实现的主流是spring boot 和spring cloud,国内是阿里巴巴的dubbo
  • 手机/PC端—互联网—网关(路由)—真实提供服务的web 服务器
  • 分布式系统的优点:高性能(能处理更多请求),高可用(发生故障仍可提供服务),可伸缩性(更改路由算法就能路由新的机器),可维护性(出现故障重新上线即可),灵活性(需要更新,停掉部分节点,更新后通过路由算法将请求路由到更新后的节点,再更新旧版本节点)
  • 分布式的切分方式(业务、数据等维度):水平方式(同一个系统部署到多台机器),垂直方式(按业务维度拆分),混合切分(先按业务维度切分,再将业务系统水平切分)
  • 系统间交互:远程过程调用(RPC)、面向服务的架构(SOA)、REST风格请求、消息机制
  • 因为网络和机器的众多不确定性,数据一致性成为分布式系统的核心问题
  • 微服务主要追求可用性(A)和分区容忍性§,轻一致性(C)
  • BASE理论:弱一致性,放弃强一致性,保证系统的可用性;当有更新操作时,不能保证马上更新后续节点,而是通过某种方法保证最后的一致性,BA表示基本可用,S表示软状态(允许存在中间状态),E表示最终一致性

8.服务注册:每个微服务在启动时,将自己的信息存储在注册中心
服务发现:服务消费者在注册中心获取服务提供者的网络信息,通过该信息调用服务
9.
a.创建父工程
b.创建子工程 eurekaServer注册中心
@SpringBootApplication
@EnableEurekaServer
c.创建配置文件
d.创建启动类
ps:jdk9以上的项目,没有JAXB API的问题,需要加4个依赖(jaxb-api、jaxb-core、jaxb-impl、activation)
e.创建子工程 eurekaClient服务提供者
@SpringBootApplication
ps:RestTemplate 是 Spring 框架提供的基于 REST 的服务组件
lombok库是一个java库,提供了一组注解消除java类中的大量样板代码
@Data@AllArgsConstructor@NoArgsConstructor…
ps:@Repository和@Mapper区别:项目启动会自动扫描到@Mapper注解,@Repository是主动标识当前类交给容器管理。有时候IDEA会识别不了@Mapper注解
f…创建子工程 eurekaClient服务消费者
@SpringBootApplication
g.创建子工程zuul
@EnableZuulProxy
@EnableAutoConfiguration
h.创建子工程ribbon
@SpringBootApplication
@LoadBalanced
i.创建子工程feign
@SpringBootApplication
@EnableFeignClients
@FeignClient(value=“xxx”,fallback=“xxx.class”)
j.创建子工程hystrix
@SpringBootApplication
@EnableFeignClients
@EnableCircuitBreaker
@EnableHystrixDashboard
k.配置中心Server
@SpringBootApplication
@EnableConfigServer
application.yml
/resourses/configclient-dev.yml
l.配置中心client+远程配置
@SpringBootApplication
bootstrap.yml
m.服务跟踪zipkinServer
@SpringBootApplication
@EnableZipkinServer
bootstrap.yml
n.服务跟踪zipkinClient
@SpringBootApplication

项目经验

  1. 在一个事务里,先保存基本信息表,再保存明细表,最后要算出明细表的金额更新到基本信息表里的金额字段,相当于要先提交保存基本信息的事务,但是这样会造成如果明细表保存失败,基本信息表不会回滚,暂时解决办法:先保存明细表,算出金额再保存基本信息。疑惑,怎样就能让他们从缓存里查基本信息那条数据。
  2. 多线程在项目中的应用:当项目与外部接口进行交互时,需要遍历列表,遍历一个就调一次外部接口,很容易出现超时或因网络故障而交互失败,此时就需要用到多线程,可以让列表中的数据同时进行处理
    Callable DisposableBean ArrayBlockingQueue ThreadPoolExecutor
  3. Jenkins"自动化"编译、打包、分发部署
    启动方式:java -jar jenkins.war
    以后台进程的方式启动:nohup java -jar jenkins.war &
    启动过程中,它会将war包解压到~/.jenkins目录下,并生成一些目录及配置文件
  4. svn拉分支的作用:
  5. Docker的作用
  6. redis单点登录各种情况
  7. Nginx实际应用
  8. SpringCloud运行机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值