企业级数仓项目3
流程:
准备虚拟机
创建一个虚拟机
键入setup设置网络,ping通百度
关闭防火墙,设置不自启
关闭selinx
复制出另外两份虚拟机,解决复制冲突
ssh密钥分享
安装JDK
解压到目录
将系统默认java替换为刚刚安装
设置环境变量
安装集群
编写分发脚本
解压到目录
确定每个节点要布置的主要服务
认识配置文件
更改配置文件
集群功能测试
准备服务器我使用的是 centos-6.9
创建虚拟机:选择自定义
选择硬件策略
稍后再选择操作系统
选择linux
设置计算能力可以多设置一点,反正你的cpu会自己判断
设置内存越大,跑的任务越快
剩下的配置一路下一步,直到硬盘空间设置,要量力而为,但最好大一点
一直下一步,最后检查一下是否有配置不满意,可以上一步回去重新设置
完成之后,先设置虚拟机的系统镜像
之后,开启虚拟机,选择页面中的第二个
跳过检查,否则会浪费很多时间,键盘选择右边
选择默认语言,最好选择中文
之后一直下一步到这里,选择是
之后需要给主机起名字
一直下一步到设置密码,设置你的root用户的密码,测试环境推荐:123456 ...
初识spring-cloud之feign
为什么要学习Feign?
答:简化 远程代码调用
我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码:
12String baseUrl = "http://user-service/user/";User user = this.restTemplate.getForObject(baseUrl + id, User.class)
我们在这里仍然可能会面临大量的重复代码的问题,其实这依然是有解决方案的。
这就是我们接下来要学的Feign的功能了。
feign这个东西相当于前面学到的resttempalte 和 httptemplate 差不多,实质上就是对resttemplate进行又高一级的封装
导入依赖1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
...
初识spring cloud之eureka
介绍Eureka就是为了解决地址写死的问题。
问题分析
在服务端对外提供服务时,需要对外暴露自己的地址。而user-consumer(调用者)需要记录服务提供者的地址。将来地址出现变更,还需要及时更新。这在服务较少的时候并不觉得有什么,但是在现在日益复杂的互联网环境,一个项目肯定会拆分出十几,甚至数十个微服务。此时如果还人为管理地址,不仅开发困难,将来测试、发布上线都会非常麻烦,这与DevOps的思想是背道而驰的。
网约车
这就好比是 网约车出现以前,人们出门叫车只能叫出租车。一些私家车想做出租却没有资格,被称为黑车。而很多人想要约车,但是无奈出租车太少,不方便。私家车很多却不敢拦,而且满大街的车,谁知道哪个才是愿意载人的。一个想要,一个愿意给,就是缺少引子,缺乏管理啊。
此时滴滴这样的网约车平台出现了,所有想载客的私家车全部到滴滴注册,记录你的车型(服务类型),身份信息(联系方式)。这样提供服务的私家车,在滴滴那里都能找到,一目了然。
此时要叫车的人,只需要打开APP,输入你的目的地,选择车型(服务类型),滴滴自动安排一个符合需求的车到你面前,为你服务,完美!
Eureka ...
微服务-hystrix熔断器
这里的熔断器与我们家庭生活中使用的保险丝差不多
保险丝是通过牺牲自己保护家庭电路
熔断器为了避免多个服务中的一个服务出现异常,而连带其余服务出现异常的情况而出现的。采用与保险丝类似的机制,但比保险丝要强
主页:https://github.com/Netflix/Hystrix/
工作机制
正常工作的情况下,客户端请求调用服务API接口:
当有服务出现异常时,直接进行失败回滚,服务降级处理:
当服务繁忙时,如果服务出现异常,不是粗暴的直接报错,而是返回一个友好的提示,虽然拒绝了用户的访问,但是会返回一个结果。
这就好比去买鱼,平常超市买鱼会额外赠送杀鱼的服务。等到逢年过节,超市繁忙时,可能就不提供杀鱼服务了,这就是服务的降级。
系统特别繁忙时,一些次要服务暂时中断,优先保证主要服务的畅通,一切资源优先让给主要服务来使用,在双十一、618时,京东天猫都会采用这样的策略。
结论:Hystrix熔断器,避免某个小服务宕机,导致整个系统级联宕机,从而导致整个系统挂了,可以有效保护其他服务正常提供服务
项目中使用导入依赖1234<dependency> <gr ...
基于eureka的微服务集群如何搭建在idea中
微服务的搭建如何配合idea这个工具将会非常有效率。
创建EurekaServer正常创建项目就行了
pom:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.2.2.RELEASE</spring-boot.v ...
mybatis中的以主键更新以主键删除无法生效
记录一个关于mybatis的问题
问题出现当我写了一套增删改查的微服务架构之后,用消费者调用生产者的时候,发现分页查询可以,增加数据也可以,就是删除和更新,怎么调试都不行
思考一般出现这种删除和更新的,肯定会涉及到 主键 比如:updateByPrimaryKeySelective,所以说,问题大概率出现在你
没有给实体类的字段加上@注解
但是我明确的记得,我的主键id一定加了,因为我用的是逆向工程,有一些注解没有添加全面,所以我一定会手动添加注解的,于是我陷入了大纠结
问题解决看,这是逆向工程给你创建的项目:
我的主键确实加了,但是原来他是放在了 serialVersionUID 上面了,我快被气吐血了,我也算是手敲过大半年时间实体类的人,但是真的没有过定义一个 序列化uid的时候,而且我虽然知道逆向工程会给我生成这个东西,但是我从没有重视,这由来已久的亏,我吃定的。
顺便说一下,如果你的实体类是用的基本数据类型(int、short、long),然后又用的Lombok工具,那么你很可能会接收不到数据,定义实体类的时候必须使用被封装过的基本数据类型(Integer)
企业级数仓项目2
日志数据:我们准备工作都做好了,但是接下来该怎么做呢?这里先要搞清楚,只有明确了表中字段的含义,我们才可以根据字段的意思做出效果,所以要先摸明白表中字段含义
生成数据:数据字段含义已经明了,现在开始获取数据。时时刻刻记得我们前面的数据处理流程,按照自己心中的流程走下去,犯错的时候你也有节奏感,看图:
心中要有图,真正开发的时候,数据一定会有的,所以流程一定要清晰,这里的数据只是辅助清晰流程的
生成流程:数据生成样板:
main函数动作:
控制延时时间:前端向后端传输数据,可以一批(10000条),也可以一次一条传输,我们日后有个德鲁伊,要一条一条分析,所以要控制一条一条的来
循环遍历次数:默认1000条数据,
循环遍历:我们的json中有两种类型的数据,分别是业务数据,还有日志数据
创建bean对象,直接通过工具类转化为json即可
对于事件时间,就是第二层json里面套了第三层json
处理系统时间:也就是获取我们拼接好的 | 左边的时间戳
创建项目:idea:maven就行
pom:12345678910111213141516171819202122232 ...
springBoot 报错Error creating bean with name 'bootstrapImportSelectorConfiguration'
springBoot 报错Error creating bean with name ‘bootstrapImportSelectorConfiguration’
异常产生在我使用了eureka之后,导入了一些pom依赖,结果报错了
解决过程这个异常的原因,经过百度,发现是没有加上父依赖,之后我反手看了一眼pom文件,发现父依赖明明就引入了
但之后我像是有了预感一样,莫名其妙的觉得可能是父依赖版本不够高,结果把父依赖的版本从2.1.6.RELEASE 改为了 2.3.2.RELEASE,然后问题解决
微服务第一天
1.微服务概述微服务的特点:
单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
独立:自治是说服务间互相独立,互不干扰
团队独立:每个服务都是一个独立的开发团队,人数不能过多。
技术独立:因为是面向服务,提供Rest接口,使用什么技术没有别人干涉
前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动端开发不同接口
数据库分离:每个服务都使用自己的数据源
部署独立,服务间虽然有调用,但能做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护,易集群 Docker部署服务
JAVA领域可以完成微服务的技术
SpringBoot,Spring
SpringCloud(基于SpringBoot),Spring的
Service Mesh:谷歌,下一代最优秀的微服务框架
Service Cxxx:华为微服务技术
SpringCloud alibaba
2.初识SpringCloud(N ...
企业级数仓项目1
要点概括:总结了实际开发一个大数据项目开发流程,先选技术(最好准备两套),将数据流程处理图准备好(说服领导),然后选择使用技术的框架(不同的框架有不同的组合方式),最后选择服务器
所用技术展示:azkaban、druid、flume、hadoop、hbase、hive、kafka、kylin、linux、oozie、presto、shell sqoop、zookeeper
数仓的概念:行话:为企业所有决策的制定过程,提供所有数据的支持,帮助改进业务流程,提高产品质量
一般可统计 uv(userview) 顾客书、pv(pageview)浏览页面数量
大概根据下图分析要做的事情
日志采集:用户点击商城页面的时候,从一个页面跳到另一个页面再推出的过程记录
业务系统:涉及金钱交易的部分
爬虫系统:有可能企业数据不全面,某些数据只能通过爬取别的网站信息才可以得到
etl:表示对数据进行清洗,分类,重组,合并,拆分,等等等等
数据仓库是所有数据的汇总地带
报表系统:需要提交给老板做决策的,一定要实现的业务功能
用户画像:通过给每个用户打上标签,可以更好的实现商品推荐,锁定用户爱好
推荐 ...