微服务架构实践:从零搭建网站扫码登录

news/2024/5/9 12:21:10/文章来源:https://blog.csdn.net/weixin_34366546/article/details/88694985

微信扫码登录大家都是应用比较多的登录方式了,现在大的购物网站像京东、淘宝等都支持使用APP扫码登录网站了。今天就用APP扫码登录网站的实例来举例说明微服务架构的搭建过程。

微服务架构应该是什么样子

在这之前先看一看一个微服务架构落地以后应该是什么样子的。平常所有的微服务架构更多的是从框架来讲的像Dubbo,SpringCloud等,从整个SpringCloud的生态来讲它也只包含微服务的一部分。因为微服务的拆分不可避免的造成了系统的复杂性,团队间的合作管理和持续的交付等等,都是一项比较复杂的工程,如果没有好的团队管理规范和持续交付的流程等微服务是很难落地的。

图片描述

下面简单介绍一下上图中微服务架构的每一层的功能和作用:

基础设施层,这一项除非自己搭建IDC,基本上现在的阿里云、腾讯云和百度云等都已经很好的支撑,特别是对于小的公司来说,更节省成本。

平台服务层,对于现有的微服务能够快速动态部署那就是Docker了,再加上现有k8s等容器管理工具等,更是让微服务的部署如虎添翼,如果系统已经达到已经规模以后,可以考虑使用此种方式进行动态的扩容,一般情况下使用Docker就能解决部署问题了。

支撑服务层,这一层跟微服务框架贴的非常近了,像SpringCloud已经自带了很多功能,像注册中心、配置中心、熔断限流和链路跟踪等,Dubbo也自带注册中心。

业务服务层,这一层主要解决的是业务系统如何使用微服务进行解耦,各业务模块间如何进行分层交互等,形成了以基础服务模块为底层和以聚合服务为前端的“大中台小前台”的产品策略。

网关服务层,这一层解决了权限控制、外部调用如何进行模块的负载均衡,可以实现在该层实现权限和流量的解耦,来满足不同的端的流量和权限不同的需求。

接入层,该层主要是为了解决相同网关多实例的负载均衡的问题,防止单点故障灯。

微服务开发框架,现在流行的微服务框架主要是SpringCloud和Dubbo,SpingCloud提供了更加完整的生态,Dubbo更适合内部模块间的快速高并发的调用。

持续交付流水线,快速进行需求迭代,从提交代码到部署上线,能够快速的交付。

工程实践与规范,这一项做不好,那整个微服务实施起来绝对是痛不欲生啊,基础模块如何定义,基础模块如何与其他模块解耦,如何进行版本的管理这个我在之前的使用Git和Maven进行版本管理和迭代的方法进行了说明。

端到端的工具链,这里就是敏捷运维工具,从研发代码到最终上线到生产环境,任何一部都要有工具去实现完成,实现点一个按钮就能最终上线的系统。

以上讲了实现微服务架构应该要做哪些事情,现在可以想想你的微服务架构到底落地到生成程度了,闲话少说,书归正传,今天是用APP扫码登录网站这个功能来进行举例说明应该从哪些方面进行微服务的落地实践。

网站扫码登录功能

这个功能是指在网站上选择使用二维码扫码登录,网站展示二维码,使用已经登录的应用APP扫码并确认登录后,网站就能登录成功,这既简单快捷,又提高了安全性。现在实现扫码登录网站的技术基本上有两种,一种就是轮询,另一种就是长连接,长连接又分为服务器端单向通信和双向通信两种,服务端单向通信只能由服务器端向客户端一直发送数据,双向通信是客户端和服务器端可以相互发送数据。像微信、京东和淘宝都是采用轮询的方式进行扫码登录的,一直使用轮询的方式在请求服务器端。今天我设计的这个扫码登录的功能,是采用的长连接能够双向通信的WebSocket的方式实现的。

网站扫码实现流程

1.用户在网站上登录时选择扫码登录。

2.服务器端收到请求,生成一个临时的令牌,前端生成带令牌的链接地址的二维码,在浏览器上显示。

3.PC端同时要与后台建立起websocket连接,等待后台发送登录成功的指令过来。

4.用户用应用扫码,这个时候如果已经登陆过,后台就能获取到当前用户的token,如果没有登录到系统中,需要提前做登录。

5.用户在应用APP上已经显示了是否确认登录的按钮。

6.用户点击确认按钮,应用APP发起后端的api调用。

7.后端接收到调用,根据临时名牌向websocket模块发送当前用户的token,pc端接收到登录成功,跳转到用户个人首页。如果用户点击了取消按钮,会根据uid向websocket模块发送取消登录的指令。

技术的选型

1.微服务框架的选择

现在比较流行的是SpringCloud和Dubbo这两个框架,RPC的微服务框架还有Motan都不错,这里我使用SpringCloud和Dubbo这两个框架,使用SpringCloud实现网关和聚合服务模块并对外提供http服务,使用Dubbo实现内部模块间的接口调用。注册中心使用Zookeeper,Zookeeper能够同时支持SpringCloud和Dubbo进行注册。

2.Websocket框架选择

其实Spring现在已经具备websocket的功能了,但是我没有选择使用它,因为它只是实现了websocket的基本功能,像websocket的集群,客户端的管理等等,使用spring实现的话都得从零开始写。之前就一直使用netty-socketio做websocket的开发,它具备良好的集群、客户端管理等功能,而且它本身通知支持轮询和websocket两种方式,所以选它省事省时。

3.存储的选择

临时令牌存放在redis中,用来进行websocket连接时的验证,防止恶意的攻击,用户数据放在mysql中。

4.源码管理工具和构建工具的选择

使用Git作为代码管理工具,方便进行代码持续迭代和发布上线,使用Gitlab作为源码服务器端,可以进行代码的合并管理,使整个代码质量更容易把控。采用Maven做为构建工具,并使用nexus创建自己的Maven私服,用来进行基础服务版本的管理和发布。搭建Sonar服务器,Maven中集成Sonar插件进行代码质量的自动化检测。

5.持续构建和部署工具

采用Docker部署的方式,快速方便。采用Jekins做持续构建,可以根据git代码变更快速的打包上线。

模块功能设计

根据《微服务架构:如何用十步解耦你的系统?》中微服务解耦的设计原则:

1.将Websocket作为服务独立出来只用来进行数据的通信,保证其功能的单一性,独立对外提供SocketApi接口,通过Dubbo的方式来调用其服务。
图片描述

2.将用户功能作为服务独立出来,进行用户注册和登录的功能,并对外提供UserApi接口,通过Dubbo的方式来调用。

3.对外展示的功能包括页面和静态文件都统一到WebServer模块中,需要操作用户数据或者需要使用Websocket进行通信的都统一使用Dubbo调用。

4.对于基本的权限认证和动态负载均衡都统一放到Gateway模块中,Gateway可以实现http的负载均衡和websocket的负载均衡。

5.如果访问量非常大时,就考虑将Gateway分开部署,单独进行http服务和websocket服务,将两者的流量解耦。

6.webserver端访问量大时,可以考虑将静态页面发布到CDN中,减少该模块的负载。

开发规范解耦公共服务

指定良好的开发管理规范,使用Git做好版本代码的分支管理,每个需求迭代使用单独的分支,保证每次迭代都可以独立上线,Maven私服中每次SocketApi和UserApi的升级都要保留历史版本可用,Dubbo服务做好多版本的兼容支持,这样就能将基础公共的服务进行解耦。

总结

微服务的引入不仅仅是带来了好处,同时也带来了系统的复杂性,不能只从框架和代码的角度来考虑微服务架构的落地,更要从整个管理的角度去考虑如何括地,否则使用微服务开发只会带来更多麻烦和痛苦。

长按二维码,关注公众号煮酒科技(xtech100),输入数字11返回代码哟。
图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_755048.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于http的web静态网站的搭建

在平常访问网站时,我们输入一个网址就可以看到我们想要看到的东西,但是,大家知道我们是如何获取到这些信息的嘛,跟着我一起来了解下吧 网址的意义 浏览器与服务器的交互 搭建流程 |----搭建环境:redhat7.x. |----搭建…

基于https的web静态网站的搭建

http协议是以明文方式发送的,不提供任何的加密方式,而https确正好弥补了这种缺陷,httpshttpssl ssl的作用 客户端与服务端的认证过程 **验证过程**: 客户端请求建立,不可能不请求服务器就直接给响应 然后进行三次握手…

开发asp.net2.0手机用网站 点滴[xgluxv]

最近一段时间一直在做一个给手机浏览的网站基于asp.net2.0,现在第一期已经到尾声,说说开发的感想。客户要求只要支持wap2.0的手机都能浏览(我刚开始想他们应该说得是属于智能手机级别的都能浏览,后来发现有点不对,他们的测试机很多…

浅析ASP网站后台设计

2019独角兽企业重金招聘Python工程师标准>>> 现在学习ASP语言很少啦,逐渐被PHP,asp.net,jsp所代替。 这里介绍ASP网站后台设计技巧 1.用户名规则: 字符大于4, 不能在黑名单里(比如…

为 Drupal 7 网站添加自定义CSS

当我们在逛聊天室或者论坛时,经常会碰到有人提问怎么向 Drupal 网站中添加自定义CSS —— 通常来讲,通过 Drupal 主题来进行添加最好。不过在某些情况下,因为环境限制或网站管理员没有访问主题文件的权限,而不得不考虑其它办法。 …

Exchange Server 2016 IIS 网站绑定的证书消失

最近处理了某用户的报维,exchange 2016 服务器上IIS分配的证书自动没有了,Exchange 服务器使用证书,来加密与客户端或其他服务器之间的数据传输,证书怎么会自己没有了呢,找了很多方法,在微软的论坛中找到了…

大型网站技术架构(八)网站的安全架构

2019独角兽企业重金招聘Python工程师标准>>> 从互联网诞生起,安全威胁就一直伴随着网站的发展,各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击(…

中国六个漂亮的古镇风景名胜区网站欣赏

古镇,一般指有着百年以上历史的,供集中居住的建筑群。中国历史悠久,广阔土地上有着很多悠久历史、文化底蕴深厚的古镇。今天这篇文章收集了六个漂亮的古镇风景名胜区网站,这些网站的共同特点是都具有复古风格,以符合古…

【weixin】微信支付---PC网站微信支付

一、PC网站支付 微信支付支持完成域名ICP备案的网站接入支付功能。PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信“扫一扫”来完成支付。 二、支付产品介绍 JSAPI支付:商家张贴收款码物料&…

大流量网站的底层系统架构

from:http://chenge.diandian.com/post/2011-10-30/6366412 动态应用,是相对于网站静态内容而言, 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数据库…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书,就应该有所收获,有所总结,最近把《大型网站技术架构》一书给看完了,给人的印象实在深刻,再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

ubuntu下用webbench 网站压力测试

2019独角兽企业重金招聘Python工程师标准>>> wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make && make install 如果在编译webbench的时候,出现/bin/sh: ctags: …

使用网站作为WCF服务宿主的几种做法

内容摘要 这一篇文章探讨使用网站作为WCF服务宿主的几种做法,我将从最基本的svc文件的方式,演化成为无svc文件的方式,并且在最后介绍REST与路由规则结合的做法。 本文所讲解的WCF功能,是基于WCF 4.0这个版本。我所采用的开发工具是…

关注经典:CSS Awards 获奖网站作品赏析《第一季》

每天都有很多新的网站推出,其中不乏一些设计极其优秀的作品。这个系列的文章,我为大家挑选了2012年赢得 CSS Awards 大奖的50个最佳网站。这些鼓舞人心的网站作品代表了网页设计的最高水平,相信你可以得到很大的启发。 您可能感兴趣的相关文章…

移动端开发-各类免费收费api及网站工具收藏

为什么80%的码农都做不了架构师?>>> 一 、api 1、https://www.juhe.cn/ 跟百度api集市差不多,超级赞,做好认证就行了,我有20认证能用的免费api 2、http://apistore.baidu.com/astore/servicesearch?word%E5%85%8D%E…

网页设计与网站建设(CS3中文版)从新手到高手

为什么80%的码农都做不了架构师?>>> 网页设计与网站建设(CS3中文版)从新手到高手 本书是一本典型的案例实例教材,从网页制作和网站建设的应用实践出发,详细介绍如 何开发博客、餐饮、健康、企业门户、…

国内政府网站群云门户建设标准

我国政府网站已经走过了以技术为导向的发展阶段,现在正处于以内容为导向向以服务为导向过渡的关键时期。政府网站如何满足网站用户的实际需求,达到服务性政府的建设要求将是当今政府亟待解决的问题。美国政府推出“云优先”发展战略和云服务门户&#xf…

MVC与单元测试实践之健身网站(八)-统计分析

2019独角兽企业重金招聘Python工程师标准>>> ​统计分析模块与之前的内容相对独立,用于记录并跟踪各部位围度的变化。还需提供对所作计划的分析,辅助使计划更合理。 一 围度记录 这儿可以记录各项身体围度指标,现在包括体重在内身…

不能忍!花钱买的视频网站VIP账号别人在用,都是撞库惹的祸

你的牙刷被别人偷偷用了,是不是不能忍? 那你花钱买的视频网站VIP账号呢?有些人可能能忍,然而有些人却不能。 央视财经频道曝光了一则消息——你买的视频网站会员VIP 别人也在用,里面的当事人田女士不能忍,因为她的其他网银密码、…

优秀网站看前端 —— 小米Note介绍页面

刚开始经营博客的时候,我写过不少“扒皮”系列的文章,主要介绍一些知名站点上有趣的交互效果,然后试着实现它们。后来开始把注意力挪到一些新颖的前端技术上,“扒皮”系列便因此封笔多时。今天打算重开“扒皮”的坑,不…