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, ...
随机推荐
- STM32CubeIDE查看内存使用情况
按照下图操作 在右下角即可显示
- public、protected、private
public(公有):可以在任何地方被访问 protected(受保护):可以被其自身以及其子类和父类访问,类的对象也不可以访问 private(私有):只能被其定义所在的类访问,类的对象也不可以访问 ...
- ToolStrip 选中某一项打勾
(sender as ToolStripMenuItem).Checked = !(sender as ToolStripMenuItem).Checked;
- win服务器安装sftp服务端
工作环境中常常会用要下载数据或者是让对端推送数据到本地服务器上,当传输的数据比较重要时,可以使用基于安全文件传输协议(sftp)来实现需求. 本人在工作环境中就遇到这样的情况,局方给我们推送数据,要求 ...
- wx小程序知识点(七)
七.小程序提速与性能优化 参考大佬vicyao的文章 https://blog.csdn.net/wetest_tencent/article/details/61196522 (1)提高页面加载速度 ...
- ES6 Promise使用介绍
1.什么是Promise Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大. 这么说可能不够直观的理解,看下面的两个例子 // callback回调函数 ...
- HGOI20190815 题解
Problem A modsum 求$\sum\limits_{i=1}^{n} \sum\limits_{j=1 , i \neq j}^{m} (n \ mod \ i)(m \ mod \ j) ...
- A. Transmigration
A. Transmigration time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- 项目配置 xml文件时 报错提示(The reference to entity "useSSL" must end with the ';' delimiter.)
这次在配置xml文件时,出现错误提示( The reference to entity “useSSL” must end with the ‘;’ delimiter.) 报错行为 <prop ...
- C++入门经典-关于extern变量
1:extern用于解决使用非本源文件的全局变量. 例如:在sample1.cpp中 int a,b; /*外部变来那个定义*/ char c; void main() { cout<<a ...