SpringCloudAlibaba第二天
nacos简介• 发音: /nɑ:kəʊs/
• 全称:Name and Config Service,nacos 是其首字母的拼写。
• Nacos 的核心功能 = 服务注册 + 动态配置
• 可以理解为 Nacos = SpringCloud Eureka + SpringCloud Config
Nacos简介与环境搭建Nacos 特征与优势
下载并编译源码$ git clonehttps://github.com/alibaba/nacos.git$ cd nacos/$ mvn -Prelease-nacos -Dmaven.test.skip=trueclean install -U
Nacos 也提供了编译好的压缩包:https://github.com/alibaba/nacos/releases
启动Linux/Unix/Mac 下执行启动命令:$ cd distribution/target/nacos-server-$version/nacos/bin$ sh startup.sh -m standaloneWindows 下双击 startup.cmd 运行文 ...
SpringCloudAlibaba第一天
springcloudalibaba 也是一套微服务的架构体系
而微服务架构体系的对立面则是单体架构,那什么是微服务架构?什么是单体架构?
单体架构单体架构就像一个盒子,所有东西全都放在这个盒子里。
一个包(war、jar)就能包含所有功能的应用。听起来似乎是很省事的对么?实际上,单体架构的代码
结构复杂:
部署麻烦:
很难扩展:
有了更合适的技术,不敢动,代码紧耦合:
微服务架构微服务架构就像一个柜子,所有东西都分类别的存放。
一系列独立的微服务构成整个系统,一个微服务只关注某个特定的功能,可以单独维护。
问题 – 服务间如何找到对方?(服务发现)
问题 – 服务间如何保障事务?(分布式事务)
问题 – 客户端如何调用服务?(服务网关)
问题 – 各个服务状态如何?(服务监控)
微服务问题综合解决方案 – Spring Cloud
springcloud核心部件
这些组件明确了需要解决的问题对应的解决方式,真正实现的其实另有其人,也就是我们的主角,奈菲Netflix
SpringCloud Netflix
SpringCloud Netflix 主要构成
Spr ...
nginx学习
概述Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
作为服务器web静态页面代理Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数
作为正向服务器用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
假设你是个普通人,你想要变得牛逼,这需要用到你的朋友A,但是朋友A被抓了在监狱,所以你得把他救出去,但是你做不到,监狱是公安局的事情,这时候,你只能靠公安局的朋友B帮你,所 ...
hystrix使用之外的联想
hystrix的使用方式越来越简单,而你是不是只记得开启feign的支持,通过编写一个接口直接通过对feign的接口调用的远程方法进行实现,然后具体实现可能会需要熔断的方法,实现熔断对吗?
问:熔断器是个什么东西?
问:熔断器使用位置?
http常见状态码
这年头很少有人不是前后端双休了吧,反正我知道看我博客的大佬肯定是双修的,但是我们单写前端或者后端的时候,都有属于自己的报错方式,当前后端数据进行交互的时候,出现了错误,报错的任务就由状态码来承担了。
状态码不像java异常信息,单词可以让你很轻松的翻译出异常的原因,所以如果不能记住每个状态码的潜在含义,就很容易出现一个状态码,就去百度一次,那很烦。
类型总结
类型概括
原因描述
1xx
Informational(信息性状态码)
正在处理请求
2xx
Success(成功状态码)
请求已经被成功处理
3xx
Redirection(重定向状态码)
需要额外的行为完成请求
4xx
Client Error (客户端错误状态码)
服务器无法处理请求
5xx
Server Error(服务器错误状态码)
服务器处理请求报错
200表示从客户端发来的请求在服务器端被正常处理了在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。比如,使用 GET 方法时,对应请求资源的实体会作为响应返回;而使用 HEAD 方法时,对应请求资源的实体首部不随报文主作为响应 ...
企业级数仓项目6
flume消费kafka数据流程规划:
服务器hadoop102
服务器hadoop103
服务器hadoop104
Flume(消费Kafka)
Flume
我们的进度来到了使用flume消费kafka数据了。
由图可知,我们现在要创建两组flume控件
实现根据集群规划来看,这个采集任务要交给node03来执行,/opt/module/flume/conf目录下创建kafka-flume-hdfs.conf文件
vim kafka-flume-hdfs.conf
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273## 组件a1.sources=r1 r2a1.channels=c1 c2a1.sinks=k1 k2## source1a1.sources.r1.type = org.apache. ...
初识spring-cloud之jwt
JWT这是什么东西?JWT,全称是Json Web Token, 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权;它是分布式服务权限控制的标准解决方案!主要用来解决跨域认证问题
它跟RBAC的区别:两者不冲突,在项目中后台权限服务的数据库设计使用RBAC,而前端项目访问后台微服务的权限校验使用jwt
为什么要用这个东西?对于传统的网站来说,需要使用session配合cookie储存用户的验证信息,但是一个大公司中可能会有多个服务项目,这就要求我们的服务产生的用户数据共享(session共享)
举个例子,a网站与b网站都是一个公司的项目,那现在要求我们在一个网站登陆了就可以在另一个网站同时登陆,如何实现?
一种解决方案是 session 数据持久化,写入数据库或别的持久层。各种服务收到请求后,都向持久层请求数据。这种方案的优点是架构清晰,缺点是工程量比较大。另外,持久层万一挂了,就会单点失败。
另一种方案是服务器索性不保存 session 数据了,所有数据都保存在客户端,每次请求都发回服务器。JWT 就是这种方案的一个代表。
到此,我们从更高的层面了解了J ...
企业级数仓项目5
kafka部署解压1tar -zxvf 安装包 -C /opt/module/
在/opt/module/kafka目录下创建logs文件夹
配置文件在kafka的 config文件夹下
12cd config/vi server.properties
需要修改的:
12345678#broker的全局唯一编号,不能重复broker.id=0#删除topic功能使能delete.topic.enable=true#kafka运行日志存放的路径 log.dirs=/opt/module/kafka/logs#配置连接Zookeeper集群地址zookeeper.connect=node01:2181,node02:2181,node03:2181
1mkdir -p /opt/module/kafka/logs
尝试启动kafka启动kafka的前提的启动zookeeper,jps 看看自己启动了没有。
进入到kafka的安装目录下执行:
1./bin/kafka-server-start.sh config/server.properties
编写启动脚本vim ...
初识spring-cloud之zuul
zuul网关网关是什么?其实就是一个用来分发拦截网络请求的服务器,说白了与nginx功能差不多
我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;为了使得服务集群更为健壮,使用Hystrix的融断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。使用Zuul作为服务网关,进行鉴权、动态路由、负载均衡。
在该架构中,我们的服务集群包含:内部服务Service A和Service B,他们都会注册与订阅服务至Eureka Server,而Open Service是一个对外的服务,通过均衡负载公开至服务调用方。我们把焦点聚集在对外服务这块,直接暴露我们的服务地址,这样的实现是否合理,或者是否有更好的实现方式呢?
先来说说这样架构需要做的一些事儿以及存在的不足:
首先,破坏了服务无状态特点。
为了保证对外服务的安全性,我们需要实现对服务访问的权限控制,而开放服务的权限控制机制将会贯穿并污染整个开放服务的业务逻辑,这会带来的最直接问题是,破坏了服务集群中REST API ...
企业级数仓项目4
zookeeper安装启动脚本集群中的启动脚本可以让你省去大部分无意义的服务启动时间,极大提高工作效率,下面的代码分别可以传入三种参数
start、stop、status,对应了三种zookeeper的命令,脚本设置权限777,放到/usr/local/bin 目录下
12345678910111213141516171819202122232425#!/bin/bashcase $1 in"start"){ for i in node01 node02 node03 do ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start" done};;"stop"){ for i in node01 node02 node03 do ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop" ...