架构
文章平均质量分 92
小霸戈
资深码农,记录学习,分享个人经验
展开
-
学习 DDD - 通用语言的模式
大家好,我是霸戈,这周学习了一些关于领域驱动设计的知识 ,对比较深刻的地方做了不少笔记,分享给大家。在日常需求讨论的时候,经常会碰到一个需求会议开了一个多小时还没有达成共识。作为业务方(领域专家)明明表达的很清楚,但是开发人员却始终无法理解透彻,很明显的原因就是由于双方的知识体系不一致 ,没有形成一种双方互相都能理解的语言。语言的鸿沟虽然领域专家对软件开的技术所知有限,但他们熟悉使用自己的领域术语——可能还具有各种不同的风格。另一方面,开发人员可能会用一些描述性的,功能性的术语来理解和讨论系统,而这原创 2021-12-05 20:37:16 · 377 阅读 · 0 评论 -
开放平台SDK设计思路
大家好,我是霸戈!上次写完 “淘宝” 开放平台接口设计思路后,有不少粉丝就提到什么时候会出下一篇,所以今天打算写一篇开放平台SDK设计的一些思路,同时我也会做一些实践,一步步把我的设计思路进行落地。在写这篇文章之前,我个人因为工作的原因使用过淘宝、京东开放平台的一些SDk,也学到不少设计思路,这次准备将我的思路落地成可以使用的SDK,大概的设计会分为三个模块,分别为:数据传输模块:主要用于传输请求数据,本文使用http协议传输数据序列化模块:用户序列化和反序列化数据,SDK是给客户使用应该尽可能的去原创 2021-10-10 15:38:37 · 620 阅读 · 0 评论 -
“淘宝” 开放平台接口设计思路
最近对接的开放平台有点多,像淘宝、京东、快手、抖音等电商平台的开放平台基本对接了个遍,什么是CRUD BODY也许就是这样的吧!!!虽然对接各大开放平台没啥技术含量,但咱也得学点东西不是,不能白对接哈!经过这几天的整理,脑子里大概有了个开放平台接口的设计套路,故整理成文章方便有需要的时间去实现自己的开放平台接口。开放平台比较关注的几个点:易用性:接口设计要简洁,请求参数要见名知意,使服务商能快速接收,为用户提供服务安全性:开放平台接口是暴露在外网,必须保证用户数据的安全稳定性:开放平台接口是给上原创 2021-09-25 18:57:04 · 328 阅读 · 0 评论 -
记一次线上商城系统 Tomcat、JVM 高并发的优化
来源:https://urlify.cn/jyYny2对于线上系统调优,它本身是个技术活,不仅需要很强的技术实战能力,很强的问题定位,问题识别,问题排查能力,还需要很丰富的调优能力。本篇文章从实战角度,从问题识别,问题定位,问题分析,提出解决方案,实施解决方案,监控调优后的解决方案和调优后的观察等角度来与大家一起交流分享本次线上高并发调优整个闭环过程。一、项目简要情况概述该项目为基于SSM架构的商城类单体架构项目,其中有一个秒杀重磅模块,如下为当前线上环境的简要架构部署图,大致描述一下:(1.转载 2020-08-23 12:30:58 · 183 阅读 · 0 评论 -
使用数据库、Redis、ZK分别实现分布式锁!
来源:https://www.cnblogs.com/barrywxx/p/11644803.html作者:BarryW分布式锁三种实现方式:基于数据库实现分布式锁;基于缓存(Redis等)实现分布式锁;基于Zookeeper实现分布式锁;基于数据库实现分布式锁悲观锁利用select … where … for update 排他锁注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大.转载 2020-08-18 09:46:34 · 167 阅读 · 0 评论 -
8场5胜,微服务 VS 单体架构
译者:王延飞原文链接:http://dwz.date/bPpg越来越多的组织开始放弃单体应用,逐步转向微服务的架构模式–将业务流程分为多个独立的服务。例如,在一个机票预订中,就可能涉及许多个单独的过程:在航空公司预订机票,付款,并在机票成功预订后向客户发送确认信息。微服务架构,就是将各个流程按照业务拆分为独立的服务。在上面的示例中,机票预订服务可以被拆分为机票预订,付款和确认,拆分后的微服务可以通过接口相互通信。那么,微服务与单体应用,究竟有什么不同?对比1:网络延迟当涉及微服务时,有一个.转载 2020-08-05 08:30:13 · 209 阅读 · 0 评论 -
Netflix 微服务架构设计解析
作者:Cao Duc Nguyen来源:https://medium.com/swlh/a-design-analysis-of-cloud-based-microservices-architecture-at概述数年来,Netflix 一直是全球体验最好的在线订阅制视频流媒体服务,其流量占全球互联网带宽容量的 15%以上。 在过去的2019 年,Netflix 已经有 1.67 亿名订阅用户,平均每个季度新增 500 万订户,服务覆盖全球 200 多个国家 / 地区。Netflix 用户每天.转载 2020-08-01 09:42:02 · 311 阅读 · 0 评论 -
SaaS 系统架构,租户数据隔离模式与租户信息解析方案!
这段时候在准备从零开始做一套SaaS系统,之前的经验都是开发单数据库系统并没有接触过SaaS系统,所以接到这个任务的时候也有也些头疼,不过办法部比困难多,难得的机会。在网上找了很多关于SaaS的资料,看完后使我受益匪浅,写文章之前也一直在关注SaaS系统的开发,通过几天的探索也有一些方向,初步用到了以下技术栈 & 工具:SpringBootSpring CloudSpring Security(鉴权)Mybatis Plus(多租户sql增强)阿里云 Rds(动态创建租户数据库)多原创 2020-07-08 10:44:46 · 1525 阅读 · 0 评论 -
RPC 基本原理以及如何用Netty来实现RPC
来源:https://www.jianshu.com/p/8876c9f3cd7f作者:清幽之地前言在微服务大行其道的今天,分布式系统越来越重要,实现服务化首先就要考虑服务之间的通信问题。这里面涉及序列化、反序列化、寻址、连接等等问题。。不过,有了RPC框架,我们就无需苦恼。一、什么是RPC?RPC(Remote Procedure Call)—远程过程调用,是一个计算机通信协议。...转载 2020-04-30 09:13:43 · 210 阅读 · 0 评论 -
聊聊分布式事务,再说说解决方案
来源:https://www.cnblogs.com/savorboard/p/7679902.html作者:Savorboard前言最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事...转载 2020-04-23 08:18:31 · 238 阅读 · 0 评论 -
Prometheus + Granafa 构建高大上的MySQL监控平台
来源:https://blog.51cto.com/xiaoluoge/2476375作者:小罗ge11概述对于MySQL的监控平台,相信大家实现起来有很多了:基于天兔的监控,还有基于zabbix相关的二次开发。相信很多同行都应该已经开始玩起来了。我这边的选型是Prometheus + Granafa的实现方式。简而言之就是我现在的生产环境使用的是prometheus,还有就是grana...转载 2020-04-11 10:05:24 · 483 阅读 · 0 评论 -
Docker容器日志管理最佳实践
本文所有内容基于:Docker-CEServer Version: 18.09.6Storage Driver: overlay2Kernel Version: 3.10.0-862.el7.x86_64Operating System: CentOS Linux 7 (Core)Docker 日志分为两类:Docker 引擎日志(也就是 dockerd 运行时的日志),容器...转载 2020-03-31 09:48:21 · 204 阅读 · 0 评论 -
详解:如何设计出健壮的秒杀系统?
前言:秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。那么秒杀系统的后台是如何实现的呢? 我们如何设计一个秒杀系统呢? 对于秒杀系统应该考虑哪些问题? 如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:一:秒杀应该考虑哪些问题1.1: 超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价...转载 2020-03-31 09:47:40 · 134 阅读 · 0 评论 -
分布式、服务化的企业级 ERP 系统架构设计方案
月光冷锋的博客博客园:https://www.cnblogs.com/liuche/p/7955462.htmlERP之痛曾几何时,我混迹于电商、珠宝行业4年多,为这两个行业开发过两套大型业务系统(ERP)。作为一个ERP系统,系统主要功能模块无非是订单管理、商品管理、生产采购、仓库管理、物流管理、财务管理等等。作为一个管理系统,大家的一般开发习惯就是使用.Net或Java技术,建立一个...转载 2020-02-20 09:49:23 · 242 阅读 · 0 评论 -
彻底搞懂 MySQL 分区!
GrimMjxhttps://www.cnblogs.com/GrimMjx/p/10526821.html一.InnoDB逻辑存储结构首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成。段段就是上图的segment区域,常见的段有数据段、索引段、回滚段等,在InnoDB存储引擎中,对段的管理都是由引擎自身所完成的。...转载 2020-02-13 09:58:39 · 1012 阅读 · 0 评论 -
5亿整数的大文件,怎么排?
作者:foreach_breakhttps://www.cnblogs.com/foreach-break/p/external_sort.html问题给你1个文件bigdata,大小4663M,5亿个数,文件中的数据随机,如下一行一个整数:61963023557681612158020393452095006174677379343122016371712330...转载 2020-02-12 10:13:23 · 932 阅读 · 0 评论 -
如何在Gihub上面精准搜索开源项目?
作者:觉非https://juejin.im/post/5e3d01c56fb9a07c91100801很多的小伙伴,经常会有这样的困惑,我看了很多技术的学习文档、书籍、甚至视频,我想动手实践,于是我打开了GitHub,想找个开源项目,进行学习,获取项目实战经验。这个时候很多小伙伴就会面临这样的问题:“我不会搜啊,我该怎么找呀?”,最终只能放弃。相信看完这篇文章,你就可以学会如何精准地...转载 2020-02-11 09:35:10 · 845 阅读 · 0 评论 -
你真的知道如何设置数据库连接池的大小吗?
rickiyanghttps://www.cnblogs.com/rickiyang/p/12239907.html前段时间在一个老项目中经历过一个问题:一个 Dubbo 服务,启动的时候慢的要死,后来看日志查原因整个过程一直在初始化数据库连接。一看数据库连接参数,连接池大小:1024。很多入行晚的同学没有经历过手写 JDBC 连接的日子。那个时候没有数据库连接池的概念,都是原生代码...转载 2020-02-09 13:06:09 · 1959 阅读 · 0 评论 -
一个基于 RabbitMQ 的可复用的分布式事务消息架构方案!
作者:Throwable博客园:https://www.cnblogs.com/throwable/p/12266806.html前提分布式事务是微服务实践中一个比较棘手的问题,在笔者所实施的微服务实践方案中,都采用了折中或者规避强一致性的方案。参考Ebay多年前提出的本地消息表方案,基于RabbitMQ和MySQL(JDBC)做了轻量级的封装,实现了低入侵性的事务消息模块。本文的内...转载 2020-02-07 10:05:45 · 1004 阅读 · 0 评论 -
这一顿神操作!我把 3000 行代码重构成 15 行!
作者:马非码博客园:https://www.cnblogs.com/marvin/p/4133973.html如果你认为这是一个标题党,那么我真诚的恳请你耐心的把文章的第一部分读完,然后再下结论。如果你认为能够戳中您的 G 点,那么请随手点个赞。把三千行代码重构为 15 行那年我刚毕业,进了现在这个公司。公司是搞数据中心环境监控的,里面充斥着嵌入式、精密空调、总线、RFID的概念,...转载 2020-03-07 09:58:20 · 447 阅读 · 0 评论 -
Mysql高性能优化规范建议
作者:听风。博客园:cnblogs.com/huchong/p/10219318.html数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不要超过32个字符临时库表必须以tmp为前缀并以日期为后缀,备份表必须以bak为前...转载 2020-02-05 09:46:06 · 820 阅读 · 0 评论 -
为什么我们做分布式使用Redis?
作者:姚登晏www.cnblogs.com/yaodengyan/绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里对 Redis 常见问题做一个总结,解决大家的知识盲点。1、为什么使用 Redis在项目中使用 Redis,主要考虑两个角度:性能和并发。如果只是为了分布式锁...转载 2020-02-04 19:54:22 · 948 阅读 · 0 评论 -
Git 如何优雅的回退代码?
作者:枕边书博客园: cnblogs.com/zhenbianshu/p/12018714.html前言从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 Linus 大神。出来混总是要还的,前些天就遇到了...转载 2020-02-03 09:59:11 · 1423 阅读 · 0 评论 -
为什么我使用了索引,查询还是慢?
作者:张飞洪地址: cnblogs.com/jackyfei/p/12122767.html经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考我的另外一篇。合理利用的是ORM在面向对象和写操作方面的优势,避免联合查询上可能产生的坑(当然如果你的Lin...转载 2020-01-16 15:01:54 · 987 阅读 · 0 评论 -
MyBatis 中的九种设计模式
虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementB...转载 2020-01-13 20:45:56 · 891 阅读 · 0 评论 -
微服务架构下的鉴权,怎么做更优雅?
作者:王海龙来源:微信公众号EAWorldhttps://mp.weixin.qq.com/s/x0CZpovseOuofTA_lw0HvA从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化,身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用,如何保证高效安全的身份认证?面对外部的服务访问,该如何提供细粒度...转载 2020-01-08 10:19:22 · 1130 阅读 · 0 评论 -
这 20 多个高并发编程必备的知识点,你都会吗?
转载自并发编程网 – ifeve.comhttp://ifeve.com/高并发编程必备基础/一、前言借用Java并发编程实践中的话”编写正确的程序并不容易,而编写正常的并发程序就更难了”,相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的,本文算是对多线程情况下同步策略的一个简单介绍。二、 什么是线程安...转载 2020-01-04 10:01:26 · 893 阅读 · 0 评论 -
知道这些 IntelliJ IDEA 实用小技巧,能让你少写 1,000 行代码!
前言工欲善其事必先利其器最近受部门的邀请,给入职新人统一培训IDEA,发现有很多新人虽然日常开发使用的是IDEA,但是还是很多好用的技巧没有用到,只是用到一些基本的功能,蛮浪费IDEA这个优秀的IDE。 同时,在这次分享之后,本人自己也学习到了一些新的使用技巧,所以借着这次机会,一起分享出来。希望可以帮到一些人。基于的 IDEA 版本信息:IntelliJ IDEA 2018....转载 2019-12-31 09:27:52 · 893 阅读 · 0 评论 -
一文教你使用 Jenkins 设计多环境、多项目持续集成环境!
滴答的雨https://www.cnblogs.com/heyuquan/p/jenkins-multi-env-cicd-architecture.html自动化部署主要是为了解决项目多、环境多、持续集成慢、部署操作麻烦、手动操作易出错、自动化运维等问题。Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。目标:支...转载 2019-12-30 09:21:33 · 384 阅读 · 0 评论 -
一文带你了解强大的 Spring Security 架构原理!
作者:before31https://my.oschina.net/xuezi/blog/3126351本指南是Spring Security的入门,它提供了对该框架的设计和基本构建的见解。我们仅介绍了应用程序安全性的最基本知识,但是这样做可以解除使用Spring Security的开发人员所遇到的一些困惑。为此,我们会看一下使用过滤器(更通常是使用方法注释)在Web应用程序中应用安全...转载 2019-12-29 11:22:16 · 1593 阅读 · 2 评论 -
史上更全的MySQL高性能优化实战总结!
作者 :惨绿少年来源:http://clsn.io/clsn/lx287.html一、前言MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。今天给大家体验MyS...转载 2019-12-28 09:36:14 · 934 阅读 · 0 评论 -
高频使用的 Git 命令集合,看完自信 git push!
CRPERhttps://juejin.im/post/5de8d849e51d455808332166前言汇总下我在项目中高频使用的git命令及姿势。不是入门文档,官方文档肯定比我全面,这里是结合实际业务场景输出。使用的 Git版本:git version 2.24.0git log查看日志,常规操作,必备# 输出概要日志,这条命令等同于# git log --pret...转载 2019-12-27 09:24:05 · 830 阅读 · 0 评论 -
老生长谈的数据仓库 3 种建模方法,附猫眼娱乐数仓架构演进!
猫眼技术团队https://juejin.im/post/5d5be159f265da03970bbc3a数据仓库存在的初期,甚至没有数据仓库的时候,猫眼的日常需求报表和数据接口提供方式如图一:数据散落在企业各数据散落在企业各部门应用的数据存储中,它们之间有着复杂的业务连接关系,从整体上看就如一张巨大的蜘蛛网:结构上错综复杂,却又四通八达。在企业级数据应用上单一业务使用方便,且灵活...转载 2019-12-26 10:43:29 · 384 阅读 · 0 评论 -
知道这20个正则表达式,能让你少写1,000行代码
技匠https://www.jianshu.com/p/e7bb97218946正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码:var reg = /^(\...转载 2019-12-25 09:36:34 · 1051 阅读 · 0 评论