微服务
文章平均质量分 85
微服务
lairikeqi
拥有足够的力量做想做的事。
展开
-
基于Redis实现分布式锁
一、背景随着业务越来越复杂,应用服务都会朝着分布式、集群方向部署,而分布式CAP原则告诉我们,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。很多场景中,需要使用分布式事务、分布式锁等技术来保证数据最终一致性。很多时候,我们需要保证某一方法同一时刻只能被一个线程执行,否则就会出现售票超卖、多次扣款、多次充值等严重生产BUG出现。在单机(单进程)环境中,JAVA提供了很多并发相关API,像JVM层面的加锁(sync原创 2021-06-21 18:31:36 · 236 阅读 · 0 评论 -
接口幂等性这么重要,它是什么?怎么实现?
一、场景凌晨2点,正在做梦,突然接到了技术总监的电话:明天来公司收拾收拾,办理离职!说实话当时我头脑一片空白,直接懵了。第二天到公司,才知道我写的一段代码,昨天一天让公司损失了100多万,被定性为重大事故,导致了我直接被炒鱿鱼,而我的一些领导也受到了牵连,让我十分愧疚。这个业务应该很多人都会遇到,所以拿出来分享一下,避免大家踩坑。我们公司是做投资理财的,用户可以充值、投资、提现,充值这块是我做的,使用第三方支付进行充值,过程如下:step1:用户网站中输入充值金额;step2:后端创建充值订转载 2021-06-19 18:16:51 · 363 阅读 · 0 评论 -
SpringCloud项目常用注解
一、@RequestParam 和 @PathVariable1. 区别@RequestParam和@PathVariable都能够完成类似的功能,本质上都是用户的输入,只不过输入的部分不同,@PathVariable在 URL路径部分输入,而@RequestParam在 请求的参数部分输入。一般来说用@requestparam是用于form表单提交,或者超链接问号传参,而REST风格一定要用...原创 2020-04-30 14:51:43 · 1588 阅读 · 0 评论 -
Redis数据结构及Spring-data-redis API使用
一、Redis概述1. 简介 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。2. 为什么要用 redis...原创 2020-04-27 18:06:32 · 450 阅读 · 0 评论 -
浅析VO、DTO、DO、BO的概念、区别和用处
一、概念VO (View Object),用于表示一个与前端进行交互的视图对象,它的作用是把某个指定页面(或组件)的所有数据封装起来。实际上,这里的 VO 只包含前端需要展示的数据,对于前端不需要的数据,比如数据创建和修改的时间等字段,出于减少传输数据量大小和保护数据库结构不外泄的目的,不应该在 VO 中体现出来。DTO(Data Transfer Object),用于表示一个数据传输对象,DTO 通常用于展示层(Controller)和服务层(Service)之间的数据传输对象。DTO 与 V原创 2020-05-12 18:17:21 · 39315 阅读 · 9 评论 -
Nginx安装配置(Linux)
一、下载环境及相关组件1. 安装c++编译环境2. 安装工具包和相关组件yum install -y pcre pcre-develyum install -y zlib zlib-develyum install -y openssl openssl-devel二、下载配置Nginx1. 下载上传Nginx步骤:官网下载Nginx新建文件夹上传nginx,上传后解压...原创 2019-07-11 10:19:16 · 248 阅读 · 0 评论 -
Nginx工作中详细配置
一、背景介绍背景:公司原有项目demo1,前端项目放在放在Linux环境目录 /usr/local/nginx/demo1,demo1下存放index.html和static文件夹(包含一些静态资源)nginx.conf中配置为:http { include mine.types; default_type application/octer-stream; client_max_body_size 10M; sendfile on; upstream demo_channel {原创 2020-06-18 16:08:36 · 334 阅读 · 2 评论 -
SpringCloud模块打包部署
一、前言公司项目架构是SpringCloud微服务,单个模块是SpringBoot,由于SpringBoot项目内置Tomcat容器,所以打包时打成Jar包,部署到Linux服务器后用命令java -jar (jar包的包名)xxxx.jar启动即可。二、Idea中Maven生命周期1. 9种生命周期SpringBoot打成jar包我们一般使用spring-boot-maven-plugin这个插件clean:清理,在进行真正的构建之前进行一些清理工作,移除所有上一次构建生成的文件。执行该原创 2020-06-14 23:12:13 · 5468 阅读 · 0 评论 -
生成分布式ID算法 -- 雪花算法
一、分布式ID1. 为什么需要分布式全局唯一ID?在复杂的分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店等产品的系统中数据日渐增长,对数据分库分表后需要有一个唯一ID来标识某一条数据或消息,此时一个能够生成全局唯一ID的系统是非常必要的。2. 那么分布式ID生成需要满足哪些条件全局唯一:分布式系统下必须要保证ID是全局唯一的,这是最基本的要求;高性能:高可用低延时,ID生成响应要快,否则反倒会成为业务瓶颈;高可用:100%的可用性是骗人的,但是也要无原创 2020-05-20 16:01:28 · 1082 阅读 · 0 评论 -
浅淡RESTful API设计规范
目前主流的通讯协议主要有RPC、http/1.1、http/2等,而http中最主流的无疑就是restful了,由于工作的原因,经常需要和不同的外部服务商进行系统集成,给出的文档都说是基于restful规范设计,遗憾的是,在我看来,几乎没有看到过真正可以称之为restful架构的api设计。今天就来谈谈如何设计一个规范、优雅、可读性高的restful api。关于restful设计的最佳实践...转载 2020-05-06 15:22:15 · 377 阅读 · 0 评论 -
dubbo-admin管理平台搭建(亲测可使用)
一、搭建准备前言:Dubbo-admin管理平台可以实时查看服务提供者和服务消费者环境:jdk1.8,tomcat8.5.42,dubbo2.6.0注意:dubbo 2.6.1及以后的版本的dubbo-admin,dubbo-monitor被单独剥离到另一个单独的工程仓库。二、下载与打包网上的war包可能与本地JDK版本不同从而启动失败,所以最好自己编译war包。1. 下载dubb...原创 2019-07-03 19:40:03 · 1235 阅读 · 1 评论 -
Dubbo简单入门案例
一、前言环境:idea、jdk 1.8、tomcat 8、mysql 5.7准备:zookeeper安装完成、dubbo-admin管理平台搭建完成目的:dubbo入门,学会简单分布式项目搭建。二、项目创建及配置目录结构:1. 创建DubboDemo(pom) 父工程使用maven-archetype-site骨架pom.xml配置依赖,导入公共依赖jar包(子工程引用时无需写...原创 2019-07-05 09:08:31 · 260 阅读 · 0 评论 -
Nginx配置虚拟主机和反向代理
一、什么是Nginx?Nginx是俄罗斯人开发的一个高性能的 HTTP和反向代理服务器。由于Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪、网易、腾讯、搜狐等企业的一些门户网站等,在3w以上的高并发环境下,Ngnix处理能力相当于Apache的10倍。面试题问:Nginx为什么能支持高并发?异步,多进程,非阻塞,使用了epoll 和大量的底层代码优化。Nginx: 采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主原创 2019-11-21 19:31:52 · 899 阅读 · 0 评论