#注意组件的常用配置,网上有的
server.port=11101
server.context-path=/doctor
spring.application.name=${server.port}-pica-cloud-doctor
spring.application.hospital.name=11501-pica-cloud-hospital
#config server settings
spring.cloud.config.name=com.pica.cloud.base.doctor
spring.cloud.config.profile=dev
spring.cloud.config.label=publish
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server
#eureka配置,以后必须配置完整
#实例名称
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
#注册中心集群地址
eureka.client.service-url.defaultZone=http://192.168.100.200:7891/eureka/,http://192.168.100.200:7891/eureka/
#把当前添加到注册中心,还有单点配置.
#eureka.client.serviceUrl.defaultZone=http://localhost:7000/eureka/
#通过swagger暴露当前微服务的接口信息
eureka.instance.status-page-url=http://${spring.cloud.client.ipAddress}:${server.port}/swagger-ui.html
#定义服务续约任务(心跳)的调用间隔,单位:秒
eureka.instance.lease-renewal-interval-in-seconds=10
#定义服务失效的时间,单位:秒
eureka.instance.lease-expiration-duration-in-seconds=10
#设置当前实例的主机名称
eureka.instance.hostname=${spring.cloud.client.ipAddress}
#设置显示ip地址
eureka.instance.prefer-ip-address=true
#feign settings
feign.hystrix.enabled=true
#使用httpclient进行网络请求
feign.httpclient.enabled=true
#feign调用默认是1000毫秒=1秒 应该设置成更长时间1000 * 60 * 5 = 5分钟
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000
#重试机制,半开试探休眠时间
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=300000
#熔断器强制关闭
hystrix.command.default.circuitBreaker.forceClosed=true
#hystrix.command.default.execution.timeout.enabled=false
#ribbon settings
#请求处理的超时时间
ribbon.ReadTimeout=300000
ribbon.SocketTimeout=300000
#请求连接的超时时间
ribbon.ConnectTimeout=30000
#zipkin的配置
#zipkin服务器的地址
spring.zipkin.base-url=http://192.168.100.100:7895
#即100%的概率将链路的数据上传给Zipkin Server
spring.sleuth.sampler.percentage=1.0
#配置映射规则
#映射的url,#被映射的微服务
zuul.routes.test1.path=/api-a/**
zuul.routes.test1.service-id=ROBBIN-CLIENT
zuul.routes.test2.path=/api-b/**
zuul.routes.test2.service-id=CLIENT9001
#rabbitmq的配置
spring.rabbitmq.host=192.168.100.200
spring.rabbitmq.port=5672
spring.rabbitmq.username=app
spring.rabbitmq.password=AqLfvyWO
#jackson settings
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
#mybatis settings
mybatis.configuration.map-underscore-to-camel-case=true
#local settings
logging.config=classpath:log4j2-dev.xml
management.security.enabled=false
#服务端使用
#eureka配置
#todo:这行是什么意思? 当前eureka注册到哪台主机上,访问地址直接是#http://${eureka.instance.hostname}:${server.port}/
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
#eureka注册中心的地址,其他微服务要进行配置的
#eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
#eureka集群配置
eureka.client.service-url.defaultZone=http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/
#git仓库地址
spring.cloud.config.server.git.uri=https://github.com/chenrushui/config.git
#哪个分支
spring.cloud.config.label=master
https://note.youdao.com/ynoteshare/index.html?id=331e5c692595b422cd2656c0087f6482&type=note
实例别名(不是微服务的名称,包含了微服务的名称),显示ip地址。
#如何让eureka中显示ip地址和端口?实例名称是ip地址+端口号
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ipAddress}:${server.port}
eureka.instance.hostname=${spring.cloud.client.ipAddress}
eureka.instance.ip-address=true
如何建立Eureka Server集群?高可用的注册中心。有什么注意事项?
当前Eureka Server节点注册到其他Eureka节点。就是说集群中的Eureka Server节点相互注册。
eureka.client.service-url.defaultZone=http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/
注意域名与主机的映射。
如何建立微服务集群?
微服务的名称属性一样,端口属性不一致。微服务的名称一样,才能进行负载均衡;通过微服务的名称进行调用。
微服务的名称,会转成ip,然后通过ip进行调用。同一个微服务名称在Eureka Server上有多个实例。
Eureka Server
管理后台地址:http://localhost:8000/
注册中心的地址:http://localhost:8000/eureka/
这两个地址有什么区别? eureka的,感觉忘了好多。
客户端:地址必须要一模一样才行,否者连接不到Eureka Server。
如何调用微服务,微服务之间如何通讯? restful api进行微服务之间的通讯
RestTemplate类+微服务的名称,注意参数
如何通过Robbin实现负载均衡?
使用注解@LoadBalanced,默认的负载均衡策略是轮询。
可以自定义负载均衡算法。
如何通过Feign调用微服务?
1)提供方:对外提供feign接口,并且开启Feign注解。
2)把微服务打包,上传到私服。
3)添加依赖包,实例化Feign接口,直接调用即可。
feign通过服务的名称调用微服务,所以只要把被调用的微服务运行起来,即可实现负载均衡。
如何搭建配置中心config server?
1)从配置中心读取到配置文件后,不用做其他处理即可。
2)读取的配置是一个环境的配置文件,比如dev环境,pro环境。
3)如何一个仓库中有多个配置文件怎么区分?多个微服务的多个配置文件在一个仓库里面。
application-doctor-dev.properties
application-doctor-test.properties
application-hospital-dev.properties
application-hospital-test.properties
前瞻性和预见性
1、微服务的依赖层级:依赖关系,解决单个微服务集群的性能瓶颈。
2、微服务的重要级别:进行熔断处理,防止整个服务雪崩。
微服务启动的两个过程:
微服务启动的时候,从配置中心读取配置;启动成功后,向Eureka Server中心注册自己。
微服务服务治理
其实要想服务化,服务治理是关键。dubbo就是一个带有服务治理功能的RPC框架。
1、要达到什么目的?
2、使用什么手段实现?
3、服务文档,关键路径分析,
调度中心:服务容量评估。
监控中心:服务调用统计。
治理中心:管理服务呀,比如服务如何注册、如何被发现、如何序列化、如何监控、如何负载均衡等。
注册中心:服务注册与发现。
微服务容器化:
1、对各服务模块进行打包后编写DockerFile。
2、在Docker上进行容器化部署。
3、运行和管理docker服务。
微服务集群:所有的微服务都在一个EurekaServer里面注册。先搭建一个注册中心。
配置服务部署多份,通过负载均衡,从而高可用。cluster,微服务集群。
如果想建立微服务集群,必须用到EurekaServer。
如何搭建高可用的分布式配置中心
1、一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件。
2、当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用。
项目结构:config Server------>eureka Servet<------config Client.
什么是eureka-client?
什么是eureka-server? 一定要区别清楚
config server 变成eureka-client,向eureka-server进行注册;
config client页 变成eureka-client,向eureka-server进行注册;
步骤:
1)为了实现config集群,需要搭建Eureka Server注册中心。
spring-cloud-starter-eureka-server
2)创建config server微服务,配置git仓库信息;
Config Server常用配置:
spring.cloud.config.server.git.uri=https://github.com/forezp/SpringcloudConfig/
spring.cloud.config.label=master
spring.cloud.config.server.git.username= your username
spring.cloud.config.server.git.password= your password
3)把config server当做Eureka client,向Eureka Server进行注册
spring-cloud-starter-eureka
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
即是config server 优势eureka client。
4)config client的常用配置,从Eureka Server中获取配置信息,从注册中心获取可用的微服务实例。
spring.cloud.config.label=master spring.cloud.config.profile=dev
注册中心的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
spring.cloud.config.discovery.enabled=true
config server的微服务名称
spring.cloud.config.discovery.serviceId=config-server
Eureka依赖名称:
spring-cloud-starter-eureka
spring-cloud-starter-eureka-server
云压测
保障高并发:企业必须从传统性能测试转向云压测。
保障系统能够承担高并发请求。
性功测试: 负载测试,压力测试。
很多公司的分布式CDN节点已经超过4000个,用户的对外服务带宽突破10Gbps。
云压测平台,传统性能测试工具。
如果数据库连接数到达上限,用户请求无法及时处理,也会给企业发展造成无法估量的损失。
越来越多的企业开始重视性能测试,必须将各种潜在的性能问题,提前扼杀在摇篮中。
CDN加速
CDN的全称是Content Delivery Network,即内容分发网络。
CND加速主要是加速静态资源,如网站上面上传的图片、媒体,以及引入的一些Js、css等文件。
CND加速需要依靠各个网络节点,例如100台CDN服务器分布在全国范围,从上海访问,会从最近的节点返回资源,这是核心。
CND服务器通过缓存或者主动抓取主服务器的内容来实现资源储备。
加速静态资源的响应。
1、在pom.xml中使用distributionManagement将项目打包上传到nexus私服
2、< repository >节点下的< id >对应setting.xml文件中的server的id
3、maven连接nexus需要验证用户名和密码,一般来说,分发构件到远程仓库需要认证,如果你没有配置任何认证信息,你往往会得到401错误。这个时候,如下在settings.xml中配置认证信息。
distributionManagement标签(id,name,url),server标签
快照版本,发行版本,install与deploy命令。
<distributionManagement>
<repository>
<id>nexus</id>
<name>releases</name>
<url>http://192.168.100.00:8082/repository/maven-public/</url>
</repository>
</distributionManagement>
如何配置maven项目连接私服(nexus)?
maven连接私服的配置分为两步
1、配置maven可以连接私服打包上传项目(maven的deploy指令)(打包上传)
2、配置maven可以从私服上下载jar包 (下载jar包和仓库)
repositories可以配置多个仓库,仓库id和仓库地址.repositories,pluginRepositories。
插件仓库,maven的运行依赖插件,也需要从私服下载插件 。从远程仓库下载镜像。
如何搭建私服,如何登陆私服? url+用户名密码
[ˈneksəs]
上传jar包文件,Maven仓库,库文件搜索
核心理念:所有的依赖都从nexus上获取,如果nexus上没有则从maven中央仓库获取。
创建微服务的项目模板。
从私服下载插件。
核心理念:私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
公司一般都有个自己的私服来管理各种jar包。
本地仓库----->私服----->远程仓库。
在配置文件中修改端口号,统一账号 admin admin123。
如何进行私服仓库配置?
私服中仓库的分类:仓库组,宿主仓库,代理仓库,远程仓库。
如何新建仓库?仓库id,仓库民称,远程仓库地址。
如何将仓库添加到仓库组中?
为了使用nexus的索引查找功能,将所有的代理仓库的远程索引打开。
注意:仓库中不需要其他的配置,只需要远程仓库的配置即可,地址和登陆信息。
所有的微服务都注册到同一个eureka Server,包含config server;整个项目只需要一个eureka Server集群就好。
微服务cluster:微服务名称相同;注册到同一个eureka server。
如何显示微服务信息?进行服务发现设置。
如果服务提供者和zuul网关在同一台机器上,大家都是localhost的域名,那就没问题,能发现服务;
如果服务提供者和zuul网关不在同一台机器上,会报一个没找到服务的异常,原因是根据localhost和端口没有找到相应的服务。
此时,一种解决方法是让服务提供者上报自己的 ip地址,并显示在Eureka的注册列表中。
只需要在服务者的配置文件application.properties上添加两个配置:
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
Feign的调用过程
1、feign的调用分两层,ribbon的调用和hystrix的调用,高版本的hystrix默认是关闭的,所以在application.properties配置文件中设置ribbon即可。
2、Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback代码。半开试探休眠时间,重试机制,查看是否服务恢复调用。
spring cloud sleuth 特别好的一篇博客
https://www.cnblogs.com/xingzc/p/9413860.html