工具idea
所用的技术类型:
Maven+mybatis+ssm+springboot+springcloud+redis+elasticsearch+mysql
在springcloud中运用到Eureka服务注册与发现的集群分布+feign框架实现的rest接口调用+ribbon的负载均衡+Hystrix的处理分布式系统的延迟和容错的开源库
爬虫流程:
- 确定首页URL,在谷歌浏览器中F12,往下滑动页面,找到真正的url,因为页面是以ajax请求进行的。
- 发送请求,获取数据。设置定时器持续爬取数据,将爬取的源数据从string转化为json,再将json转化为对象存储带list集合中。
- 解析数据。设置条件判断进行数据的有效性检验,采用redis去重,将url设置为redis中的key,判断redis中是否存在相同地址,不存在则添加到数据库和同步到redis,否则不添加数据到数据库。
- 存储数据,使用mybatis进行数据的插入。
项目目前流程:.
- 用户发起请求,如localhost:9001/search?keyword=黄
- 利用feign框架实现rest接口调用
- {其服务提供者和服务消费者均注册在eurekaserver中}并且eureka以集群分布式的形式,避免了单点故障,以及eureka所面临的高并发问题
- 通过ribbon的自定义负载均衡算法进行负载均衡。然后告知用户下一步的请求资源所在处。
- 在整个过程中,服务监控hystrixboard全程监控其流程,以便处理分布式系统的延迟和容错
从理念上讲,分布式的实现有两种形式:
水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务;
垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。
在目前的整个项目中,用到了分布式的水平扩展,也就是我们所说的集群。但由于项目板块不多,所以并未使用垂直拆分。
【补充】ribbon实现负载均衡