开放平台:用户服务

2021-03-07
阅读 1 分钟
1.3k
背景用户服务是对使用gateway的客户进行管理的服务,想使用gateway的用户通过门户网站进行注册,登陆之后申请API进行测试调用。用户服务包括以下几个功能:个人用户相关:个人用户注册,登录,注销机构用户相关:管理端录入用户-发送激活验证码-用户去激活画面凭借手机号和机构号激活,激活的同时生成密钥对和appSecret...

中间件使用:redis cluster

2021-03-05
阅读 1 分钟
1.3k
没有用spring-data-redis,封装了service层,针对常用操作实现了get,set,delete,hasKey,hget,hset,hdelete,lpush,rpop,ttl,publish等方法

spring MVC实践

2021-03-03
阅读 2 分钟
1.3k
使用spring mvc提供restful风格的接口,实现前后端分离,后端只提供数据接口,而不做页面渲染。因此可对接口做统一处理:请求参数校验响应数据格式全局异常处理通过以上统一处理,开发人员可专注于业务处理,把校验,异常响应的逻辑分离出来。请求参数校验:对于url中的参数如果添加@RequestParam,但没有传递该参数,则...

开放平台:监控体系

2021-03-02
阅读 1 分钟
2k
监控背景:监控所做的一切都是为了网关和服务出现异常时能快速知晓并定位、解决问题。因此需要实时知道这些指标的值,如果超出规定的范围发出通知(prometheus/flink)。开发者收到异常通知时能快速通过日志找到原因(ELK)。提高线上感知问题的能力,能迅速定位问题,用最小的成本把问题带来的损失降到最低。

开放平台:分布式定时任务框架actuator

2021-03-01
阅读 2 分钟
1.5k
背景:目前定时任务都在各自服务中配置,每个服务至少有两个实例启用,定时任务冗余执行,造成资源浪费的情况。如果想修改任务的时间,需要重启服务,比较繁琐。并且任务执行成功与否只能通过生产日志查看,极为不便。为集中配置各个服务的定时任务,统一管理,便于查看任务执行情况,需要开发定时任务管理模块。

开放平台:权限校验auth框架

2021-02-28
阅读 3 分钟
3.9k
背景:门户网站分为个人用户,个人开发者,机构用户,页面不同的操作需要特定的用户才能操作。如api申请,密钥下载只有机构用户才可操作,重置密码需要登录后才可操作。管理端分为系统管理员,开放平台管理员,银行管理员,不同的角色具有不同的权限,权限按资源划分服务间调用也需要进行保护,如调用发送短信接口,调用...

开放平台:简述

2021-02-25
阅读 1 分钟
1.7k
Open api开放平台开放平台核心是一个连接机构与银行,转发API的网关。公司内部有很多自己的接口服务,贷记卡,借记卡,直销银行,如开户,扣款,转账,这些API是松散的,如果有客户机构来对接,每对接一次就要做很多重复性的工作,开放平台相当于提供了一个标准,将对接流程标准化,客户机构和银行按照我们的接口规范进...

ELK实践

2021-02-24
阅读 1 分钟
1.6k
一个系统(project)包含多个服务(service),一个服务有多个副本,elk系统需要将不同系统的日志统一归集,按project-service-date归集到index便于查看系统日志,避免寻找系统所有副本日志的繁琐。Filebeat定义所采集的系统、服务及其日志地址,发送到project-service的topic。Logstash订阅kafka以该project开头所有的t...

开放平台:网关架构及优化

2021-02-21
阅读 3 分钟
2.7k
网关初始化时,从redis获取配置,包括路由信息,机构的密钥(用于业务数据加解密),平台对机构的公私钥(用于签名验签),机构可访问api的权限,机构黑白名单。并将这些配置信息保存至内存。这些信息在管理端配置。通过redis对配置变动进行监听,如果有变动则更新内存或重建路由路由信息包括后端对接方式,后端地址,按...

开放平台:网关交易同步优化

2021-02-20
阅读 1 分钟
1.3k
现有架构:对于mysql的操作:Req:一次插入Rsp:一次查询,一次修改交易同步:一次查询,一次删除Mysql表结构为交易全部信息,作用为匹配交易定时任务:同步正常交易同步开放平台已超时但又有响应的交易临时表剩下只有请求但没有响应的交易重放的交易只会记录一次,因为临时表根据traceNo,appId,timestamp匹配修改后架...

开放平台:网关概述

2021-02-18
阅读 1 分钟
2.5k
公司内部有很多服务,如消费信贷,账户服务,支付服务等,这些服务由公司不同部门或团队维护。如果外部机构想要调用这些接口,需要与不同团队协商接口格式,加解密格式,签名验签格式等调用方式。如果公司有一个统一对外提供服务的网关,统一调用方式,服务调用方和提供方都按照这个标准进行接口调用和开发,就可以避免...

架构思考:对于代码开发,服务架构的一些思考

2021-02-17
阅读 1 分钟
1.1k
什么是好的代码:复用性强高可扩展易维护可读性强面向接口编程高内聚低耦合配置化,做不到动态生效起码应做到配置化,不要硬编码灵活性,模块化架构及代码层面的简洁和优雅利用类的封装性、继承性和多态性,灵活运用接口组合考虑这样写好不好扩展,有没有暴露不必要的接口对于微服务,考虑:服务无状态服务是否高可扩展...

Docker swarm部署spring boot服务

2020-11-22
阅读 2 分钟
3.5k
原先部署单体式应用是把服务打成jar包放到服务器,通过shell脚本启停服务。对于微服务来说,这种部署方案十分繁琐。因为服务很多,每个服务都不止一个副本,并且服务部署在不同的机器。如果系统换版,光启停服务都需要一段时间。可以通过jenkins这种CI/CD工具帮助快速部署服务,但是生产环境可能不允许部署这种工具。对...

中间件使用:alertmanager

2020-11-05
阅读 2 分钟
4k
AlertManager用于接收Prometheus发送的告警并对于告警进行一系列的处理后发送给指定的用户。在prometheus中的角色:对于告警,最简单的原则是来一次告警就发一次,这样会有大量重复且不必要的告警,漏掉重要的告警。场景:

中间件使用:apollo

2020-11-02
阅读 4 分钟
2.9k
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

中间件使用:prometheus

2020-11-02
阅读 3 分钟
3.1k
Prometheus由go语言编写的基于时序数据库的监控告警系统,已加入CNCF基金会,是CNCF推荐使用的监控告警系统。Prometheus可以看做微服务监控告警的解决方案,通过部署exporter可以监控中间件的状态,微服务的运行状态,通过alertmanager进行告警。自研的中间件可以通过暴露/metrics接口纳入prometheus的监控,通过grafana...

基于MDC的日志链路监控

2020-10-29
阅读 3 分钟
4.1k
gateway链路监控现状:目前查找一个交易的详情,需要通过portainer进入请求所在的容器查找流水号对应的日志。由于请求很多,同一请求的日志可能不在一起,并且同一请求中有的日志无法添加流水号。目的:通过流水号对网关日志进行查询,可得到同一请求的所有日志。原理图:方法:将gateway的同一请求的日志添加流水号:

架构思考:微服务

2020-10-28
阅读 1 分钟
1.1k
随着系统的架构和功能越来越复杂,单体应用已经满足不了性能和可维护性的需求,需要将功能拆分,因此产生微服务。通过将不同功能的模块拆分,可以保证高可扩展,高性能,高可用,易测试的特性。由于将服务拆分,会带来一些问题:

架构思考:分布式存储高可用方案探究

2020-10-19
阅读 2 分钟
2.6k
为避免单点瓶颈,提高存储的可用性及负载能力,系统通常部署多个节点。但此时会出现一些问题:客户端写入数据成功,系统各内节点的数据是否也都写入成功如果系统内一个节点挂掉,系统是否仍旧可用如果系统内由于网络故障发生分区,系统是否仍旧可用这些问题是多节点的分布式存储系统必须面对并解决的问题,即保证系统的...

中间件使用:canal数据同步方案设计

2020-10-09
阅读 2 分钟
3.9k
项目中一部分数据如页面静态数据需要从redis中获取,以提高页面加载速度。页面数据的修改是通过管理画面修改mysql,通过定时任务或手动将mysql数据同步到redis,以供页面获取。这里数据同步不是增量同步,而是根据条件查询得到数据集后同步。网关中的一些参数同样是在mysql维护,然后定时或手动推送到redis,并通知网关...