SpringBoot和微服务
####微服务CAP
Consistency(数据强一致性),Availability(服务可用性),Partition-tolerance(分区容错)
####微服务功能
#####服务的注册与发现
Eureka集中化管理来注册和发现服务,服务注册中心通过心跳检测,检查被注册的服务是否可用
#####容错
熔断器Hystrix(Circuit Breaker),当请求失败次数超过阈值后,开启熔断不执行业务操作,执行快速失败,直接返回请求失败的消息;自我修复机制,一段时间后,会半打开熔断器检查一部分请求是否正常。
+ 将资源剥离,当出现故障时,只会隔离该接口;被隔离的接口执行快速失败,不会阻塞超时
+ 服务降级,当超过服务处理能力时,
+ 自我修复能力
负载均衡组件
Ribbon讲请求根据负载均衡策略分配到不同实例中
服务网关
Zuul把所有服务的API接口资源整合,对外透明;可以做身份权限的合法性验证;流量监控
服务链路追踪
Sleuth定位复杂复杂系统中出错的位置,实时观察链路的调用情况
安全控制
Security
####Boot
引导,快速启动spring应用
####@SpringBootApplication
SpringBootApplication启动类注解包括了多个注解,是一个符合注解的简写,主要包括@Configuration,@EnableAutoConfiguration,@ComponentScan
####@EnableAutoConfiguration
自动获取所有配置
####配置方式优先级
高优先级会覆盖低优先级的配置项
+ 命令行参数
+ 系统环境变量
+ 位于文件系统中的配置
+ 位于classpath中的配置
+ 代码中的配置
spring-boot-starter-web
讲spring-boot-starter-web加入到依赖中,就可以用内置的tomcat启动web应用
SOA和微服务
SOA喜欢重用,微服务喜欢重写
微服务的注册与发现
同一个微服务启动多个实例形成集群,让服务器集群作为一个逻辑服务主体对外提供服务,这个过程就是注册(Service Registry)。
服务访问者(Service Accessors)如何访问到这个逻辑服务主体的过程,就是发现
集群日志
ELK(ElasticSearch,Logstash,Kibana),es对对于高频写入没有很高的承受力,可以用kafka当做数据采集的缓冲区,减轻写入es的负担
ribbon的LoadBalanced
restTemplate.getForObject的请求url是生产者的yml里的spring.application.name
####server配置
```
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://\({eureka.instance.hostname}:\){server.port}/eureka/
####启动eureka-server,访问server端
<img style="width:800px;height:400px" src="https://img2018.cnblogs.com/blog/841731/201903/841731-20190316201254974-746091965.png" align=center />
<img style="width:800px;height:400px" src="https://img2018.cnblogs.com/blog/841731/201903/841731-20190316195540326-237600615.png" align=center />
####eureka多client配置,2个生产者的配置文件
application-client1.yml,application-client2.yml
server:
port: 8762
spring:
application:
name: eureka-client
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
server:
port: 8763
spring:
application:
name: eureka-client
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
####读取不同的配置,启动2个客户端
java -jar target/eureka-client.jar --spring.profiles.active=client1
java -jar target/eureka-client.jar --spring.profiles.active=client2
####访问2个client端地址,输出测试数据和启动端口
http://localhost:8762/hi?name=test
http://localhost:8763/hi?name=fore
Hi,test!I am from port 8762
Hi,test!I am from port 8763
####查看eureka-server的注册中心
<img style="width:800px;height:400px" src="https://img2018.cnblogs.com/blog/841731/201903/841731-20190316201809542-381591445.png" align=center />
####consumer的配置,启动LoadBalanced实现访问生产者的负载均衡
server:
port: 8764
spring:
application:
name: eureka-ribbon-client
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
####请求consumer的接口,发现输出的端口号在2个生产者之间切换
http://127.0.0.1:8764/getHi
Hi,test!I am from port 8762
Hi,test!I am from port 8763
####查看eureka-server的注册中心
<img style="width:800px;height:400px" src="https://img2018.cnblogs.com/blog/841731/201903/841731-20190316202614202-1346654588.png" align=center />
SpringBoot和微服务的更多相关文章
- 3 SpringBoot与微服务
SpringBoot的使用? 化繁为简: Spring MVC 需要定义各种配置,配置文件多. SpringBoot的核心功能? 独立运行: java -jar XXX.jar (以前启动SPring ...
- SpringBoot之微服务日志链路追踪
SpringBoot之微服务日志链路追踪 简介 在微服务里,业务出现问题或者程序出的任何问题,都少不了查看日志,一般我们使用 ELK 相关的日志收集工具,服务多的情况下,业务问题也是有些难以排查,只能 ...
- 02【熟悉】springboot和微服务的介绍
1,springboot简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程. 该框架使用了特定的方式来进行配置,从 ...
- 看了 Spring 官网脚手架真香,也撸一个 SpringBoot DDD 微服务的脚手架!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么我们要去造轮子? 造轮子的核心目的,是为了解决通用共性问题的凝练和复用. 虽然 ...
- 什么是SpringBoot,微服务
Spring是如何简化Java开发的 为了降低Java开发的复杂性,Spring采用了以下4种关键策略: 1.基于pojo的轻量级和最小侵入性编程: 2.通过IOC,依赖注入(DI)和面向接口实现 ...
- springboot+springcloud微服务项目全套资料(笔记+源码+代码)
最近好几天没有写博客了,由于时间的太忙了,项目要做.各种资格证要考试,实在没有时间写了,今天正好赶上有闲暇的一刻,应许多的爱好者的要求发一份微服务项目的资料,此资料十分完整,且是最新的.希望各位读者能 ...
- springboot启动微服务项目时,启动后没有端口号信息,也访问不了
2018-06-05 13:43:42.282 [localhost-startStop-1] DEBUG org.apache.catalina.core.ContainerBase - Add c ...
- SpringBoot 快速构建微服务体系 知识点总结
可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽 ...
- 面试刷题37:微服务是什么?springcloud,springboot是什么?
面试中被问到为什么要使用微服务架构?springcloud的核心组件有哪些? 拿我们国家的兵种来说,如何把战争这个单体架构微服务化,就是根据适用的场景,拆分出不同的兵种(微服务) 然后每个兵种之间通过 ...
随机推荐
- [整理]C语言中字符常量与ASCII码
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为 ...
- asp.net菜鸟到中级程序员的飞跃 --30本好书点评
如果你是一个菜鸟或者自认为初学者那么本文非常适合你:不能说这30本书就是最佳组合,但是可以说这个组合不差:本人曾博览群书,很多书重复,很多书讲的不适用,这些书都是目前书店可以买到的:达到中级程序员以后 ...
- Web应用开发中的几个问题
Introduction 由于Ajax技术在Gmail中的成功应用和高性能的V8引擎的推出使得编写Web应用变得流行 起来,使用前端技术也可以编写具有复杂交互的应用.相对于native应用,Web应用 ...
- 2016-2017-2 《Java程序设计》第六周学习总结
20155223 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 InputStream.OutputStream:无论数据源或目的地为何,只要设法取 ...
- input限制
转载,暂未使用,可以借鉴. 出处:http://blog.csdn.net/a13590394462/article/details/73943785
- [转]边框回归(Bounding Box Regression)详解
https://blog.csdn.net/zijin0802034/article/details/77685438 Bounding-Box regression 最近一直看检测有关的Paper, ...
- JavaScript常用数组方法
JavaScript数组方法有以下这些: forEach() 方法对数组的每一个元素执行一次提供的函数. map() 方法创建一个新数组,其结果是该数组都执行一次函数,原函数保持不变. filter( ...
- 【环境变量】Linux 下三种方式设置环境变量与获取环境变量
1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变 ...
- Django 1.10中文文档-模型参考
模型字段 本文档包含了Django提供的全部模型 Field 包括 字段选项 和 字段类型 的API参考. 参见 如果内建的字段不能满足你的需求, 你可以蚕食 django-localflavor ( ...
- Linux下C程序的反汇编【转】
转自:http://blog.csdn.net/u011192270/article/details/50224267 前言:本文主要介绍几种反汇编的方法. gcc gcc的完整编译过程大致为:预处理 ...