1.微服务简述

可以看这个哥们的笔记,比我记的好得多

微服务技术栈 - 乐心湖's Blog | 技术小白的技术博客

消息队列解决里面服务集群之间的异步通信。

系统监控链路追踪,实时监控每个结点的运行状态(负载,内存),能快速定位到哪个方法。

Jenkins,对微服务项目的编译,然后通过docker打包。K8s和Rancher实现部署。

不同的业务写在不同的机器上,但它们之间的相互调用也是问题。

1.1 企业需求

1.2 springCloud和springBoot对应版本

1.3 服务拆分及远程调用(demo理解)

两个sql文件导入不同数据库。因为现在还没有部署。

1.3.1 查订单时,把订单所属用户信息一起返回(相互调用 1)

我们目前时这样

我们需要做到这样

这个方法对外暴露了一个接口,只要我们在浏览器输入对应的地址一定可以得到信息。

但我们如何在java代码中,发起http请求?  看下一小节如何解决。

1.3.2  Spring提供的工具RestTemplate相互调用2

注入容器获得RestTemplate对象方法。

在service这里可以获得,数据库返回的user的id值。

这个方法发请求,如果不指明User.class,会把数据装成json。这里指明了,就会反序列化成User对象。

然后把它设置到order里。

1.4 Eureka

角色是相对而言的。一个服务既可以是提供者,也可以是消费者。

用Eureka,来选择。服务提供者的地址信息。

eureka帮助我们记信息,找他要就行,记着每一个微服务的信息。

拿到信息,用负载均衡的方式挑一个。

1.4.1 Eureka的作用

1.4.2 搭建Eureka

Eureka将自己也注册了,因为以后可能会有多个Eureka。

启动类。

测试地址,可以localhost访问。

1.4.3 注册服务

需要更改service方法里请求的路径,改成服务名,才能访问集群。

看到注册中心目前只有一个实例。 我们需要去注册。

步骤1:在需要注册进eureka得微服务得yml文件里加上。

 步骤2:加上自己微服务得名称

这个是一个微服务,再开一个,用不同得端口。

1.4.4 注册不成功得报错

复制粘贴,导致eureka配置没顶格。误认为是别的配置里加eureka。

得NM严格对应,服了。

server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/cloud_order?useSSL=falseusername: rootpassword: a839846976driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservicemybatis:type-aliases-package: cn.itcast.user.pojoconfiguration:map-underscore-to-camel-case: true
logging:level:cn.itcast: debugpattern:dateformat: MM-dd HH:mm:ss:SSSeureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka

1.5 Ribbon负载均衡

1.5.1 发起请求的底层

template加注解, 表明这个请求要被ribbon处理。

拦截的动作是它做的

我们点进这个接口看方法。它会拦截客户端发起的HTTP请求。

1.5.2 拉取Service

我们在这个方法上打断点。然后刷新页面重新获得数据。

里面先获得 主机名和服务的名称。然后去找eureka拉去service。

把服务名称交给loadBanlance,loadBanlance是RibbonLoadBalancerClient对象。

我们点进loadBanlance的excute方法。发现它根据servceId,也就是serviceName,从eureka里拉取服务列表。

我们看getServer方法干什么的。发现实现负载均衡的策略是通过一个   Irule类

1.5.3 流程总结

1.5.4 负载均衡策略调整

从这个图看,默认的ZoneAvoidanceRule ,可能有轮换的性质。

常用的规则类。

如何调整rule的类型?

方法一的作用是全局的,会影响到其他微服务的选择策略。

方法二:order-service,发送请求调用user-service的数据,所以在yml里定义选择userservice的策略。

1.5.5 ribbon饥饿加载

加载一次之后,以后不用加载,服务列表会有缓存。

还有配置对哪个client做饥饿加载。

1.6 nacos注册中心

1.6.1 安装

解压红线。

配置文件里有端口8848。如果我们端口有用8848的,可以修改。

bin下面的启动文件,双击可以启动。

cmd里启动 -m指定模式,这里我们先用单机模式   standalone。

在bin目录下执行命令。

访问consloe地址。

登录的默认账号和密码都是nacos。

1.6.2 将服务注册到nacos

安装指南里有依赖。复制粘贴。

客户端的两个依赖注释掉。

然后修改这俩服务的yml文件。

nacos的配置属于Spring的配置。

1.6.3 nacos服务分级存储模型

地域划分的集群。

配置一个实例的集群信息。配上微服务所属集群。
 

1.6.4 nacos的nacosRule负载均衡

service里改访问集群的路径。

这里当时没有上注解,所以一直没办法有负载均衡操作。

3.user-service的权重。

1.7感觉自己的笔记没有别人记得好。停止记笔记。

微服务技术栈 - 乐心湖's Blog | 技术小白的技术博客

黑马微服务学习(实用篇)相关推荐

  1. 微服务学习总结4(网关和consul结合)

    先上一张图片: 首先要启动consul服务,用于对三个日志服务的注册和发现.(默认端口8500) 然后启动三个日志服务,端口分别为5726.5727.5728. 最后启动网关服务,用于转发客户端请求, ...

  2. 架构师图谱·微服务消息队列篇

    1. 概述 "架构师图谱"是一个很宏大的命题,特别是优秀的架构师自身也是"由点到面再到图",一点点成长积累起来,尝试写这系列文章的目的更多的是结合自身的一些经验 ...

  3. .NET Core 微服务学习与实践系列文章目录索引(2019版)

    Photo :.NET Core 文 | Edison Zhou 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各种开源组件搭建服务治理技术方案,并在学习过程中总结了一 ...

  4. 微服务实现不同登陆_微服务网关——实现篇

    在<微服务网关--需求篇 >中,我们讨论了微服务网关的需求:而在<微服务网关--设计篇 >中,我们讨论了微服务网关的设计.本文将对微服务网关进行实现. 对于网关的开发,完全自研 ...

  5. 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像

    目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernetes ...

  6. Java微服务学习笔记(一):微服务架构的概念理解

    Java微服务学习笔记 Tips:入门学习时粗略整理,仅供参考 (一):架构的基础理解 文章目录 Java微服务学习笔记 前言 一.微服务是什么? 二.常用开源微服务框架演化 1. Dubbo 2. ...

  7. Java微服务——SpringCloud实战篇2:整合Gateway、Config、Bus

    Java微服务--SpringCloud实战篇2:整合Gateway.Config.Bus 如果小伙伴在阅读下列内容时,对于编写SpringCloud项目是零基础,那么请先阅读小编的另一篇博文:&qu ...

  8. 成小胖学习微服务架构·基础篇

    看到最近"微服务架构"这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习.而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落地,对此深有研究. ...

  9. Spring Cloud与微服务学习总结(6)——认证鉴权与API权限控制在微服务架构中的设计与实现(四)

    本文转载自(http://blueskykong.com/2017/10/26/security4/) 1. 前文回顾 首先还是照例对前文进行回顾.在第一篇 认证鉴权与API权限控制在微服务架构中的设 ...

最新文章

  1. 如何设计一个高性能CPU?
  2. 原生编辑器_免费开源的GIF制作神器,可录屏幕/摄像头/画板,自带编辑器
  3. mysql触发器 生僻字_MySQL生僻字插入失败的处理方法(Incorrect string value)
  4. Android Studio 1.1的安装和遇到的坑
  5. Leetcode--260. 只出现一次的数字Ⅲ
  6. vs运行时候冒了这个错:无法启动IIS Express Web 服务器~Win10
  7. C++ 析构函数不要抛出异常
  8. 华为手表表盘的数字什么意思_手表的陀飞轮、月相、逆跳都是什么意思?
  9. 使用EDD枚举域数据
  10. 自己动手编译NodeMCU固件
  11. python报错ImportError: cannot import name ‘Image‘ from ‘PIL‘ 的时候大多数情况下是由于PIL版本和当前python的版本出现了不兼容
  12. 腾科张老师教你如何在cisco路由器上部署和使用FTP/TFTP
  13. php mysql购物网站_php实现一个简单的购物网站
  14. python拟合log函数得出公式
  15. linux 动态监控进程
  16. java中的double相乘-------保留精度
  17. 循环神经网络中梯度爆炸的原因
  18. Framework学习(五)应用程序启动过程
  19. idea 分支管理插件_git flow 分支管理idea 具体操做
  20. springboot 启动非常慢(超过80秒)解决方案

热门文章

  1. 获取微信绑定的手机号
  2. 电信用户流失预测案例(1)
  3. pve(proxmox ve)强制关闭虚拟机
  4. 大学毕业4年-回顾和总结(1)-钱,金钱观
  5. 圆通梦碎高端快递:承诺达疑似解散,员工大闹总部
  6. Goaccess安装与使用
  7. 瓜瓜打游戏(EASY) (计数dp
  8. AspectJ 使用及原理
  9. webpackjsonp 还原_钌金属单原子电催化实现常温常压高效还原固氮
  10. Linux K8S(Kubernetes)常用命令