【十次方微服务后台开发】Day01:环境、缓存(吐槽)、ES搜索文章、MQ注册时发送验证码
一、系统设计与工程搭建
1、需求分析
程序员的专属社交平台,包括头条、问答、活动、交友、吐槽、招聘
SpringBoot+SpringCloud+SpringMVC+SpringData全家桶架构
swagger编写前后端开发接口文档
REST 是Representational State Transfer的缩写,翻译是”表现层状态转化”。
2、开发准备
生成getter and setter的快捷键是Alt+Insert
返回结果、分页类、结果代码类
数据库主键值使用分布式ID生成器,采用推特的snowflake (雪花)算法【速度快、自增、多个节点、不会碰撞】
3、基础微服务:标签CRUD
增删改查使用postman测试
编写公共异常处理类

前后端跨域问题处理:要在controller类上添加注解 @CrossOrigin 即可!这个注解其实是CORS的实现。
CORS(Cross-Origin Resource Sharing, 跨源资源共享)是W3C出的一个标准,其思 想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成 功,还是应该失败。
二、查询与缓存
1、基础微服务---条件查询
使用Predicate toPredicate查询,使用PageRequest分页
2、招聘微服务
使用代码生成器codeutil生成代码
3、问答微服务开发
4、文章微服务开发
5、缓存处理:docker中安装redis
RedisTemplate封装Jedis,对查询文章进行缓存,如果为空则查询,最后return
修改前/删除后清空缓存,并可以在查询时设置过期的时间
Spring Cache缓存方法的返回值map形式
@CacheEvict注解表示清空注解,@Cacheable表示添加注解
三、MongoDB
1、概念
表=集合,行=文档
2、CRUD
db.spit.remove({})
db.spit.findOne({userid:'1013'}).limit(3)
db.spit.find({content:/^加班/})模糊查询加班开头
包含db.spit.find({userid:{$nin:["1013","1014"]}})
条件连接db.spit.find({$or:[ {userid:"1013"} ,{visits:{$lt:2000} }]})
列值增长db.spit.update({_id:"2"},{$inc:{visits:NumberInt(1)}} )
3、Java操作
mongodb-driver驱动包
BasicDBObject bson=new BasicDBObject("visits",new BasicDBObject("$gt",1000) );// 构建查询条件
SpringDataMongoDB实现吐槽功能
4、吐槽微服务
查询吐槽列表、吐槽点赞
使用Redis控制不能重复点赞,先判断再点赞并存入
四、分布式搜索引擎ElasticSearch
1、介绍
基于Lucene的搜索服务器和RESTful web接口
索引=数据库、类型=表、文档=行
2、Head插件的使用
使用npm install ‐g grunt‐cli插件,自动运行任务
需要配置允许跨域访问
可以实现新建索引、CRUD
3、IK分词器,两种分词算法:ik_smart 和 ik_max_word
默认中文单字符分词
配置文件中可以进行自定义扩展词典和停止词典

4、搜索微服务开发
实现新增和查询功能
5、使用Logstash与MySQL数据同步
logstash ‐f ../mysqletc/mysql.conf 自动执行查询并将新数据打印到控制台
6、Docker环境安装ES
拷贝配置文件到宿主机,并在启动时将宿主机的yml配置文件挂载到容器
并将ik分词器上传到宿主机
添加允许跨域配置后下载head镜像并创建容器
五、消息中间件RabbitMQ
1、简介
AMQP的实现
特点:进入队列之前,通过 Exchange 来路由消息的,内置的 Exchange或自己实现

由Exchange将消息路由到一个 或多个Queue中(或者丢弃)。Exchange并不存储消息
发送给Exchange的时候,一般会指定一个routing key, 来指定这个消息的路由规则
2、使用
直接模式(Direct):“RouteKey”为要发送到的队列名字,不存在RouteKey中指定的队列名,则该消息会被抛弃【只能将消息发送到唯一一个节点】
分列模式(Fanout):一次发给多个队列时,一个Exchange可以绑定多个 Queue,多队列绑定到交换机
主题模式(Topic):通过模糊匹配使得来自不同的源头的消息可以到达一个队列usa.news(usa.*)
3、用户注册
生成手机验证码,存入Redis并发送到RabbitMQ,设置过期时间
4、短信微服务:提取MQ中的消息
使用阿里云通信发送消息
阿里云,产品中选择”短信服务“ (4)申请签名 (5)申请模板 (6)创建 accessKey
向指定的消费者(手机)发送验证码
【十次方微服务后台开发】Day01:环境、缓存(吐槽)、ES搜索文章、MQ注册时发送验证码的更多相关文章
- 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现
庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介 在第七篇文章<庐山真面目之七微服务架构Consul ...
- Apollo-open-capacity-platform 微服务能力开发平台 (转)
来自大佬的apollo整合微服务的教程:欢迎大家点评和star,链接如下:https://gitee.com/owenwangwen/open-capacity-platform 官方demo链接:h ...
- 微服务项目开发学成在线_day02 CMS前端开发
1 Vue.js与Webpack研究 开发版的浏览器:https://www.google.cn/intl/zh-CN/chrome/dev/ 前端的开发框架:微服务项目开发学成在线_Vue.js与W ...
- spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法
spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法 前言 本篇接着<spring boot / cloud ...
- 携程框架Apollo实现.NET Core微服务统一配置(测试环境-单机)
Apollo实现.NET Core微服务统一配置(测试环境-单机) https://www.cnblogs.com/guolianyu/p/10065999.html 一.前言 注:此篇只是为测试环境 ...
- 流量染色与gRPC服务托管 微服务协作开发、灰度发布之流量染色 灰度发布与流量染色
大规模微服务场景下灰度发布与流量染色实践 https://mp.weixin.qq.com/s/UBoRKt3l91ffPagtjExmYw [go-micro]微服务协作开发.灰度发布之流量染色 - ...
- Dapr微服务应用开发系列0:概述
题记:Dapr是什么,Dapr包含什么,为什么要用Dapr. Dapr是什么 Dapr(Distributed Application Runtime),是微软Azure内部创新孵化团队的一个开源项目 ...
- Dapr微服务应用开发系列2:Hello World与SDK初接触
题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...
- 微服务-使用Redis实现分布式缓存
在单体中对于key信息和用户信息是放在内存中放的,通过session进行管理. 微服务是要放在分布式缓存中,以实现服务的无状态化. @Autowired private StringRedisTemp ...
- Blazor+Dapr+K8s微服务之开发环境调试
1 安装Dapr开发调试环境 1.1 Dapr 完整安装模式不支持开发调试 在上一篇随笔<Blazor+Dapr+K8s微服务之服务调用>中,我们通过为每个 ...
随机推荐
- Linux 使用 Systemd 管理进程服务
转载自:https://mp.weixin.qq.com/s/e-_PUNolUm22-Uy_ZjpuEA systemd 介绍 systemd是目前Linux系统上主要的系统守护进程管理工具,由于i ...
- Java容器化参数配置最佳实践
Java是以VM为基础的,而云原生讲究的就是Native,天然的矛盾,虽然Quarkus是为GraalVM和HotSpot量身定制的K8s Native Java框架,生态原因切换成本太高,这种矛盾体 ...
- TCP服务端收到syn但是不回复syn ack问题分析
文章转载自:https://blog.csdn.net/jueshengtianya/article/details/52130667 最近在分析客户的一个问题时遇到了一种奇怪的情况,客户在服务端开启 ...
- SC命令---安装、开启、配置、关闭windows服务 bat批处理
一.直接使用cmd来进行服务的一些操作 1.安装服务 sc create test3 binPath= "C:\Users\Administrator\Desktop\win32srvDem ...
- secureCRT登录ubuntu 报错:`No compatible key-exchange method. The server supports these methods: diffie-hellman`
在VMware虚拟机中安装好ubuntu 20.04,已安装并启动sshd,但是使用secureCRT远程登录时则报错: Key exchange failed. No compatible key- ...
- python合并多个excel
前言 1.工作中,经常需要合并多个Excel文件.如果文件数量比较多,则工作量大,易出错,此时,可以使用Python来快速的完成合并. 2.使用方法:将需要合并的多个Excel文件放到同一个文件夹下, ...
- SpringBoot课程学习(四)
一.profile的多文档配置方式 1.profile文件方式:提供多个配置文件,每个代表一种环境 如: 1.application-dev.properties/yml 开发环境 2.applica ...
- PHP全栈开发(八):CSS Ⅲ background
设置背景颜色: div { background-color:#b0c4de; } 不仅可以给body标签设置背景颜色,还能给p,div,h标签设置背景颜色 设置背景图片: body { backgr ...
- P7961 [NOIP2021] 数列 (DP 刷表法)
(n<=30,是个多维的DP) v数组就是用来计算权值的,一共有m+1个.将S看做一个二进制数,按照题目S的定义,相当于在S的每一位可以随便+1(满足限制情况下),一共可以加n次. 我们来建立D ...
- 右击存放项目的文件夹出现 open with Visual Studio Code 的打开方式
最终效果 步骤1: 找到 Visual Studio Code 的安装位置 (右击桌面Visual Studio Code 图标-->属性-->打开文件夹所在位置) 新建一个可以编辑的 c ...