云计算考核 – 分析电子银行需求采用微服务架构对系统进行设计(1)
(2)个人帐户管理相关功能:个人账户转账;管理你所有的账户;查看最新的帐户报表和余额;查看自动更新的支出报告;查看付款历史;将数据与个人理财程序整合;修改联系方式;核实条款和条件;信息反馈
(3)贷款相关功能:申请贷款或信用卡;网上增加透支额度
(4)投资帐户相关微服务:购买和管理投资账户;查看使用投资研究;网上投资推荐.
2. 微服务的划分
基于微服务的网上银行系统是融合微服务架构思想和软件三层架构设计思想进行构造。首先,在整体架构层面,在满足系统非功能性需求的前提下进行两级拆分,将整个系统功能模块拆分为多个颗粒度尽可能小的微服务子系统,分别是个人帐户管理微服务********、转账微服务、贷款微服务和********投资微服务。其次,在代码层面,按照软件三层架构设计思想,将每个功能模块内的代码层级分为展现层、业务逻辑层和数据访问层,三层之间通过微服务包装成独立的系统级应用并通过接口和网络向外提供服务。基于微服务的网上银行系统的总体架构图如图所示。
如图所以,我们可以大概将微服务进行划分。
(1)帐户管理微服务,我们主要是实现用户对个人帐户的管理,包括个人账户转账;管理你所有的账户;查看最新的帐户报表和余额;查看自动更新的支出报告;查看付款历史;将数据与个人理财程序整合;修改联系方式;核实条款和条件;信息反馈,他需要与用户相关的数据库进行交互。
(2)转账微服务是要实现付款转账等操作,主要包括:电子账单支付服务,实现汇款功能;提前安排付款;个人帐户之间转账;查看已支付账单;网上订购旅行支票,它需要保存用户的信息,并且存储在转账的相关数据库。
(3)贷款微服务,主要帮助用户实现贷款以及信用卡的相关操作,包括申请贷款或信用卡;网上增加透支额度,需要和支付相关的数据库交互。
(4)投资微服务,主要是帮助用户完成投资相关功能,包括购买和管理投资账户;查看使用投资研究;网上投资推荐,也需要和数据库交互。
(5)其他微服务,还要实现的相关微服务有注册发现微服务、配置微服务、网关微服务等。
二、使用的技术以及分析
===================
微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
微服务的优点在于:每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。微服务能使用不同的语言开发。微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
实现本电子银行系统会使用到的技术栈:
服务注册发现: eureka
服务开发:Springboot、Spring、SpringMVC
配置管理:spring config , spring security
服务调用 REST
API网关: Spring Cloud Gateway
分布式锁: redis
安全认证: JWT
服务监控: spring-boot-admin
1. sping cloud
Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
考虑 Spring Cloud 的原因有如下几点:
(1)Spring Cloud 来源于 Spring,质量、稳定性、持续性都可以得到保证。
(2)Spirng Cloud 天然支持 Spring Boot,更加便于业务落地。
(3)Spring Cloud 是 Java 领域最适合做微服务的框架。
(4)相比于其它框架,Spring Cloud 对微服务周边环境的支持力度最大。
(5)对于中小企业来讲,使用门槛较低。
(6)Spring Cloud 是微服务架构的最佳落地方案。
2. 服务注册发现
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,一实现SpringCloud的服务发现功能。
3. REST
REST提供了一组架构约束,当作为一个整体来应用时,强调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来减少交互延迟、增强安全性、封装遗留系统的中间组件。
几年的由于移动互联网流行使得前端设备多样化,业界急需一种统一的机制来规范API设计,使得API适用于各种各样的前端设备,REST符合这种需求。并且行为和资源分离,更容易理解。
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以点击这里获取!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
需要这份系统化的资料的朋友,可以点击这里获取!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!