11.8 Springcloud项目简介
各位领导好,我从毕业后做了两年Java开发工程师,刚开始都是一些SSM框架的项目,但是由于技术不断更新,微服项目成为必然的趋势,大约在做了1年的SSM框架,之后开始接触微服项目,前后经理过Dubbo和SpringCloud两种框架,接下来我就介绍一下简历上的第一个项目。
首先它是一个基于Springcloud框架的名为“永乐票务”的微服项目,我们项目组负责了大概20多个模块,这个项目期间我自己独立承担的大概八个模块。其实前期我还参加了SSM项目,大致的功能就是支撑永乐票务的系统的功能。所以说真正的微服我只大概做了半年。我们项目组负责了大概20多个模块,这个项目期间我自己独立承担的大概八个模块。像登录模块,支付模块,通用模块,管理模块,权限模块,运营模块等等。在做这个项目期间我也学到了很多知识。
总体来说,系统采用的是基于Springcloud的微服项目,采用的是中台架构。另外也接触了很多技术,比如说Vue、Angular.js、LayUi、ElementUi、Node.js、微信小程序,微信公众号,支付宝这些第三方技术,另外呢我还接触接触到了缓存技术Redis,全文索引技术Elasticseach,还接触了一些环境,也可以去搭建一些环境,比如说Elasticsearch+Logstash+kibana+Kafka实现分布式系统日志收集系统的搭建和使用,此外还可以搭建一个docker环境,实际上我们的项目考虑到成本和性能的原因,所以我们将我们的整个系统搭建在docker之上,实际上当时运维人员稀缺,之前一直在做的离职了,所以我当时也参与了服务部署事项,所以我可以通过dockerfile脚本文件完成整个项目的部署。
另外,我还参与了很多功能上的设计和环境上的实现,举个例子说吧,我们设计了一个原生的权限框架,不同的用户有不同的角色,不同的角色有不同的权限,系统之中有一个类似于审批流程的概念。其实谈设计数据库可以采用的是分库分表的方式,我们采用的是Mycat,这是一个基于Mysql的数据库中间件来进行分库分表,分片的规则是Partition by mode,用分库分表的原因主要是我们的订单业务数据量实在太大,所以呢根据这一业务需求,我们去做了这一个扩容。当时在使用了Mycat之后确实数据库压力有所减轻。
其实在数据库中间件之前呢,我们还有一个技术叫做redis+token令牌机制实现登录,它能够解决传统session登录的问题。像集群服务器当中这个Session共享的问题,众所周知这个session的效率不高,还耗费资源。谈到这个令牌机制,谈到Redis,不得不谈消息队列,实际上就是消息中间件,之前用过很多消息中间件,像构建分布式系统日志收集系统时用的Kafka,多线程高并发多用户抢购的问题时用到了ActiveMq,还有用作事务的RabbitMq,我印象比较深的是当时的一个类似于双十一抢购的抢购服务当中使用ActiveMq,这个主要是利用redis分布式锁setnx原理,引入分布式锁的原因是为了解决抢购过程中的安全问题,主要是抢超和重复抢的问题。
所谓的分布式锁其实就是上锁和去锁,当我们每次调用抢购方法的时候每次要去上锁,抢购完成之后要去锁,后面的用户才能重新获得锁,再去抢购商品,同样的抢购的时候也需要上锁。上锁的时候需要给锁设置一个有效时间,如果锁一直存在达到一定时间会直接让锁失效,这样让系统不会因为一个用户一直卡住。在我们引入分布式锁之后,发现分布式锁有一个致命问题,当时我们使用的是Apache提供的高并发压力测试工具Jmeter,这个工具可以模拟多线程情况下多个用户抢购的情况,测试出来分布式锁的效率比较低。于是我们引入ActiveMq来解决效率低下的问题,实现流量削峰。当我们用户发送一个抢购请求的时候,用户会直接得到一个排队成功的返回信息,实际上处理这个抢购请求的还是我们的consumer,然后处理完成之后将是否抢购成功发给ActiveMq,然后配置一个监听器,后端做一个轮询接口,前端利用cros实时调用这个轮询接口,这样前端就可以不用等待,是一个异步请求,并且接近实时的获取是否抢购成功。这是一个完整的抢购业务和解决方案,能完成这个部分,这是我比较自豪的。当然了这些部分也是和项目组的人一起做的。
另外,在项目中也有其他的一些技术,比如说支付宝字符接口,百度地图Api,短信验证接口,报表等等。报表就是将项目中的信息以excel的形式导出来,共客户方财务或者我们的运维人员使用。当然报表模块使用的也就死一个工具类Jcreporter,直接调用即可。
最后呢,我想说的是我其实也不是什么大咖,项目都是以团队的形式做的,大家分工合作。我也有许多技术需要去学习,希望贵公司可以给我一个机会,为公司创造价值,提升自己。
11.8 Springcloud项目简介的更多相关文章
- 微服务SpringCloud项目架构搭建入门
Spring的微服务框架SpringCloud受到众多公司欢迎,给大家带来一篇框架搭建入门.本次采用的版本是Spring Cloud版本为Finchley.RELEASE. 一.SpringCloud ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
- 64.GitHub 排名前100的android项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- SpringCloud系列一:SpringCloud的简介和架构
一.SpringCloud简介 SpringCloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架,那么它本身不会提供具体功能性的操作,更专注于服务之间的通讯.熔断.监控等.因此就需要很多 ...
- 从零搭建一个SpringCloud项目之Feign搭建
从零搭建一个SpringCloud项目之Feign搭建 工程简述 目的:实现trade服务通过feign调用user服务的功能.因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要 ...
- SpringCloud Alibaba 简介
SpringCloud Aliababa简介 SpringCloud Alibaba是阿里巴巴集团开源的一套微服务架构解决方案. 微服务架构是为了更好的分布式系统开发,将一个应用拆分成多个子应用,每一 ...
- Android小项目练习之一 项目简介
------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...
- idea创建springcloud项目图文教程(EurekaServer注册中心)
http://blog.csdn.net/hcmony/article/details/77854999 idea创建springcloud项目图文教程(EurekaServer注册中心)(六) 1, ...
随机推荐
- java 8 foreach获取索引
当 forEach 需要索引 https://segmentfault.com/a/1190000007881498 或者采用 List<string> stringList = new ...
- 【CF1181C】Flag
题目大意:给定一个 N*M 的矩阵,定义一个矩形区域为一个"国旗",满足:矩形区域可以按行划分成三个高度相同的部分,其中每一个部分中的颜色完全相同,第一部分的颜色与第二部分颜色不同 ...
- Web前端经典面试试题(三)
一. 什么是Ajax??? 术语Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验. Ajax它是"Asynchronous JavaScript + XML的简写&quo ...
- 使用Nginx的proxy_cache缓存功能取代Squid[原创]
使用Nginx的proxy_cache缓存功能取代Squid[原创] [文章作者:张宴 本文版本:v1.2 最后修改:2009.01.12 转载请注明原文链接:http://blog.zyan.cc/ ...
- spark 三种数据集的关系(一)
Catalyst Optimizer: Dataset 数据集仅可用Scala或Java.但是,我们提供了以下上下文来更好地理解Spark 2.0的方向数据集是在2015年作为Apache Spark ...
- hiho #1144 : 01串(模拟)
#1144 : 01串 时间限制:7000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串"001 ...
- eclipse导入tomcat时Unknown version of Tomcat was specified
Unknown version of Tomcat was specified 的原因有2种可能: 1 路径不是真正的路径,可能是其子路径,要找到bin路径. 2 安装目录没有访问权限. 我的就是第2 ...
- 用SWPM导入SAP时因用户Culture及系统Locale引发的问题
[问题]SWPM安装SAP时因用户Culture及系统Locale引发的问题 [现象] ①IE浏览器显示空白(SWPM界面不显示) ②SAP安装时出现“Error occurs when execut ...
- 基于nc命令监控服务端口的Shell脚本
Shell代码: #!/bin/bash export LANG=en_US.UTF- #IP Address=127.0.0.1 #Port Port= #尝试的次数 n= #nc timeout, ...
- CentOS7.2 安装 PHP7.2
安装源 安装 EPEL 软件包: $ sudo yum install epel-release 安装 remi 源: $ sudo yum install http://rpms.remirepo. ...