基于SpringCloud的某支付产品微服务构架拆解

某企业支付产品,处于初级运营阶段,为客户、商户提供入驻、充值、结算等服务。产品基于SpringCloud体系构建微服务,项目代码结构图如下。

640?wx_fmt=png

分微信公号和后台管理两块,采用动静分离结构部署,使用Nginx服务器。后端代码仅提供业务服务,无展现功能。该项目数据库并未严格按照微服务体系中各服务模块各有自维护自身数据库的原则,而是共用一个数据库,降低了数据间同步的复杂度。比如分布式事务、数据的一致性等问题处理起来简单一些。

代码管理采用maven,虽然gradle在未来趋势上表现更强劲。

下面就从技术点技术面来解构下该产品

1、采用mvnw替代单一的mvn命令。mvnw 全名是maven wrapper,它的原理是在maven-wrapper.properties文件中记录你要使用的maven版本,当用户执行mvnw clean 命令时,发现当前用户的maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令,比如刚才的mvn clean。它的应用场景是组织内部不采用mvnw是可行的,但针对开源的一个项目?如何保证你使用的maven的版本和下载源码的人的maven的版本一致呢,这时候就可采用mvnw。

2、Lnhn算法,由于产品发行卡片,为便于卡片卡号的识别校验,采用能用的Lnhn算法生成卡号。是一种简单的算法,此算法最初是在20世纪60年代由科学家创造,主要用于检验银行卡、信用卡号码的有效性的算法。该算法现已得到了广泛的应用,在包括信用卡在内的银行卡号以及不少重要身份识别的证件号。国内仅有极个别卡号发行未遵循Lnhn规则,它不是一种安全的加密,设计它的目的只是防止意外出错而不是恶意攻击。

简单罗列下Lnhn算法规则:

1、从卡号最后一位数字开始,逆向将奇数位相加。 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

(现在你可以校验下你钱包里的银行卡号,是不是符合这个规则?)

3、Gogs服务。作为全球最大的同性交友社区Github,运营主体在境外,有时候访问还是受限制的,你懂的。Microsoft收购了Github后也引发了一部分人出逃,不管是出于服务稳定,还是代码私密性,搭建自己的git服务还是很有必要的。Gitlab是个选择,但操作相对比较繁琐。此产品引入了Gogs,它是用Go语言写的,能兼容各个系统。能运行于 Windows,MAC,Linux,ARM 等,安装使用都比较轻量简便,是一个功能丰富的、私有的Git托管服务。

4、Spring Batch批处理框架,说批处理,Java领域相信不少朋友会采用Quartz来实现,其实我们只是采用了Quartz的调度功能,批处理功能是我们自己实现的,Quartz本身也并无批处理的能力。官网对其有明确的释义:

Spring Batch provides reusable functions that are essential in processing large volumes of records, including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management. It also provides more advanced technical services and features that will enable extremely high-volume and high performance batch jobs through optimization and partitioning techniques. Simple as well as complex, high-volume batch jobs can leverage the framework in a highly scalable manner to process significant volumes of information.

未完待续......

640?

扩展阅读:

640?wx_fmt=png

歪脖贰点零

关注程序员个人成长

640?wx_fmt=jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Cloud是基于Spring框架的一套完整的微服务解决方案,它为构建分布式系统提供了许多工具和服务,旨在简化服务之间的集成和通信。以下是Spring Cloud的主要组成部分和开发要点: 1. **服务发现**(Service Discovery):Spring Cloud Netflix的Eureka或Consul用于服务注册与发现,使服务能够动态地查找其他服务的实例。 2. **配置中心**(Config Server):如Spring Cloud Config Server,提供统一的配置管理,避免了每个服务单独配置的复杂性。 3. **负载均衡**(Load Balancer):Spring Cloud Ribbon支持配置客户端负载均衡,使得流量可以自动分配到后端的服务集群。 4. **断路器**(Circuit Breaker):Hystrix是一个断路器模式的实现,当后端服务不可用时,可以保护调用者免受雪崩效应。 5. **微服务网关**(API Gateway):Spring Cloud Gateway提供API路由、安全控制和监控等功能。 6. **服务调用**(Feign或Ribbon):使用这些工具可以轻松创建对远程服务的无侵入调用。 7. **消息队列**(Message Brokers):如RabbitMQ或Kafka,用于异步通信和解耦。 8. **服务追踪**(Tracing):Zipkin或Jaeger可以帮助追踪服务间的调用链路,用于性能分析。 9. **安全**(Security):Spring Cloud Security提供了OAuth2、JWT等安全机制。 在开发Spring Cloud应用时,通常会采用模块化的设计,每个模块代表一个独立的服务,并通过约定优于配置的方式与其他服务交互。开发流程可能包括定义服务接口、配置服务中心、使用Spring Boot启动微服务、连接数据源等步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MavenTalk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值