微服务之SpringCloud基础

SpringCloud微服务基础

微服务架构--SpringCloud 网站架构模式 单点应用/分布式系统面向于服务架构(SOA) /微服务架构 web项目 三层架构 1.控制层 2.业务逻辑层 3.数据访问层 传统项目:代码全部在一个项目中,使用包名来区分 com.controller--控制 com.service--业务逻辑层 com.dao--数据访问层

面向服务架构 公司 (如果互联网公司,如果使用传统架构技术开发代码冲突,拆分项目) 1.分布式开发:将一个大的公司,拆分成n个子项目。 会员系统/支付系统/消息系统/微信系统 2.集群:将一个项目,相同功能部署在多台不同服务器。 作用:解决高并发。

分布式架构就是将一个项目拆分成n多个子项目,每个子项目使用rpc远程调用技术。 你用过哪些rpc远程调用框架 SpringCloud/HttpClient/hessioan/dubbo 面向于微服务架构(SOA),通信协议SOAP SOAP http协议+xml序列号与反序列化 银行使用webservice

反向代理服务器 nginx a.tomcate01 b.tomcate02

c.客户端

SOA服务项目,提供外部访问接口 提供外部访问接口 (业务逻辑层和数据访问层)

web工程-->rpc远程调用 (控制层)

面向于服务架构优点:代码服务/解耦,适合于大公司人多。 缺点:网络延迟,维护复杂,不好整合,编写复杂 小公司 传统项目 --------------------------------------------------------------------------------

微服务架构(分布式架构) 是在传统soa架构领域升级 微--细分,轻量级,通讯协议http协议+rest风格+json 每个服务都是独立运行

来源 1.移动端(安卓/ios端) pc端 h5端(手机浏览器)

2.H5工程 PC工程 混合工程 (RPC远程调用 http协议+json格式+rest互联网公司 httpclient) 使用比较简单通信 使用httpclient[ 接口只允许在内网进行访问,和外网接口进行对接https] 微服务架构与面向于服务架构区别: 面向于服务架构(SOA)主要针对于在银行xml格式 企业级 ESP服务 微服务系统,会更加细分,Http+json+rest进行 轻量级 独立运行 解耦

接口项目 3.会员服务 订单服务 支付服务 (每个服务--对应一个数据库) 主流:rpc解决框架dubbo/springcloud

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

接口地址怎么管理?http://member.itmayiedu.com/api/user 容错机制/负载均衡/网关/路由策略/高并发情况下,怎么接口限流/断路 微服务解决框架--SpringCloud

SpringCloud解决什么样的问题? 配置管理(注册中心eureka/zk)/服务发现/服务注册/断路器/路由策略/负载均衡/全局锁(比如:redis)/分布式会话/客户端调用/接口网关(ZUUL)/服务管理系统 ----学习SpringCloud

rpc远程调用 SpringBoot与SpringCloud SpringBoot简化xml配置,快捷整合框架 SpringCloud 是一套微服务解决方案--RPC远程调用 关系SpringCloud依赖接口(SpringMVC)依赖与SpringBoot SpringMVC --接口

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

SpringCloud技术流 1.SpringCloud注册中心环境搭建euraka 2.服务注册与发现 3.SpringCloud客户端调用 rest/feign 客户端调用工具 ribbon 负载均衡 zuul接口网关 eureka服务注册

案例:会员服务提供用户信息/订单服务 查询订单 订单服务需要查询用户,订单服务调用会员服务接口

注册中心(euraka)

会员服务(提供接口,服务提供者)-->注册服务-->注册中心(euraka) 订单服务(调用接口,服务消费者)-->调用注册中心(euraka)-->消费-->会员服务

编写会员服务

编写订单服务

SpringCloud调用服务原理

负载均衡

怎么实现负载均衡 nginx/lvs/HAproxy/F5 SpringCloud中负载均衡

什么事接口网关?? 接口网关作用拦截请求 类似ngix(配置一些拦截策略)

qianduan.itmayiedu.com 来源渠道(H5端调用) ajax1 member.itmayiedu.com ajax2 order.itmayiedu.com 跨域问题

使用项目名称区分接口网关转发到实际地址 www.itmayiedu.com/member www.itmayiedu.com/order SpringCloud里的zuul接口网关 接口网关作用:拦截所有请求,任何请求先交给接口网关,然后再用网管进行转发nginx 反向代理

member.itmayiedu.com 会员服务

order.itmayiedu.com 订单服务

使用Zuul搭建服务接口网关

接口网关:解决跨域问题

分布式配置文件中心概述 开发中,怎么区分环境? dev测试环境/pre 预发布/prd正式生产环境 调用第三方接口,alibaba.alibaba/api使用httpclient进行调用。配置信息,存放在配置文件中。 配置信息,存在配置中。需要重新发布版本。 java代码读取配置,存放在永久区,static 修饰。缺点

1.将值存在缓存中,数据库中备份。 2.后台搭建一套可视化管理配置文件项目。 3.读取流程先从缓存中读取,缓存没有在读取数据库。 4.缓存与数据库值不同步怎么解决,清理缓存。 将配置文件信息,存放在版本控制(git/svn)springcloud就是使用这种机制。

远程地址

分布式配置文件中心(git) dev文件--userName=itmayiedu pre文件--userName=itmayiedu prd文件--userName=itmayiedu

server-config 配置服务项目

会员服务工程

会员工程-->配置服务项目-->分布式配置文件中心

订单服务工程

订单工程-->配置服务项目-->分布式配置文件中心

1.远程地址git主要存放配置文件信息 2.server-config主要缓存配置文件信息,可以被其他调用

搭建分布式配置中心

1.SpringCloud微服务解决框架RPC远程调用 2.eureka注册中心 ridbbon负载均衡客户端 zuul网关 分布式配置中心 3.客户端调用工具rest feign feigin客户端调用,SpringCloud断路器Hystrix 服务降级/熔断机制/限流

服务雪崩效应产生原因 SpringCloud Hystrix断路器

SpringCloud hystrix 熔断机制/服务降级/服务限流/解决服务雪崩效应

什么是服务雪崩效应?

客户端(同一时刻有51个请求)

tomcat服务器

会员工程

user/login user/get

(订单功能需要订单会员工程查询)

订单工程

order/getOrder【tomcate最大线程数50个】 依赖服务 user/get[每次需要3秒进行响应] order/addOrder 请求等待(转圈)/

雪崩效应:所有请求在处理一个服务,不能访问其他服务接口。 1.使用超时机制,服务降级() 服务降级:服务调用接口的时候,如果发生错误或者超时,不让调用接口,调用本fallback。 服务一旦发生错误/超时的时候,返回请求过时或者错误。

jmeter做压力测试的一个工具

雪崩效应解决办法

1.服务雪崩,产生服务堆积等待,导致其他服务接口无法访问。 2.如何解决服务雪崩效应 a.超时机制--服务降级处理 服务降级:服务接口发生错误,不去调用接口,调用本地方法 SrpingBoot的fallback b.熔断机制 类似于保险丝 熔断机制 就是为了解决服务高并发,一旦达到规定请求,的时候,熔断,报错。--服务降级 c.隔离机制:每个服务接口隔离开 c1接口 线程池

c2接口

线程池

d.限流机制:nginx 使用网关

使用hystrix实现服务降级

SpringCloud hystix短容器 :当我们使用RPC远程调用的时候,超时,解决服务雪崩效应, 专门解决服务与服务之间报错信息。

hystix断路器 里面包含服务降级,熔断机制,隔离资源。

使用hystix解决服务雪崩原因

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何使用mosh替换ssh

毫无疑问,SSH是远程服务器管理最实用的方法。然而,它的主导地位并不意味着它在某些情况下没有缺点。如果您曾在移动设备上使用过SSH,那么,你应该知道SSH的一些...

22340
来自专栏张首富-小白的成长历程

CentOS系统优化脚本,未完结

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

23120
来自专栏月牙寂

docker源码分析(1)---框架与engine

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

415110
来自专栏MoeLove

Linux上源码编译MongoDB

MongoDB的官网上是有已经编译好的二进制包的,这里选择clone MongoDB在github上的仓库

15530
来自专栏一枝花算不算浪漫

[python]使用django快速生成自己的博客小站,含详细部署方法

19840
来自专栏大魏分享(微信公众号:david-share)

详细描述微服务架构模式 | 微服务系列第三篇

虽然微服务通常是单独部署的,但大多数企业级微服务架构要求服务彼此交互以及与其他外部服务交互。 使用进程间通信(IPC)机制实现该通信。 根据应用程序的要求,微服...

10720
来自专栏全栈工程师成长之路

深入浅出学习前端开发(环境搭建篇)

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

734140
来自专栏架构师之旅

Git基础和规范-协同开发

关于版本控制 什么是版本控制: 官方说法:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,你可以对任何类型的文件进行版本控制。 ...

31750
来自专栏熊二哥

Maven快速入门

Maven是Java中最为普及的包管理工具,在实际项目中由于依赖的各类jar包非常多,因此概念清晰的处理好各类Jar依赖显得非常重要,接下来通过基础知识,Jar...

64290
来自专栏北京马哥教育

使用monit搭建一个监控系统

马哥linux运维 | 最专业的linux培训机构 ---- 上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情。当然了主要是监控异常,因为我...

45570

扫码关注云+社区

领取腾讯云代金券