随笔分类 - 系统架构
系统架构
摘要:中台设计概念
中台大概可以划分为:业务中台、数据中台、算法中台、技术中台、研发中台、组织中台、字典中台
业务中台:提供重用服务,例如用户中心、订单中心之类的开箱即用可重用能力,为战场提供了空军支援能力,随叫随到,威力强大;
数据中台:提供数据分析能力,帮助从数据中学习改进,调整方向,为战场提供了海军支援能力;
算法中台:提供算法能力,帮助提供更加个性化的服务,增强用户体验,为战场提供了陆军支援能力,随机应变,所向披靡;
技术中台:提供自建系统部分的技术支撑能力,帮助解决基础设施,分布式数据库等底层技术问题,为前台特种兵提供了精良的武器装备;
研发中台:提供自建系统部分的管理和技术实践支撑能力,帮助快速搭建项目、管理进度、测试、持续集成、持续交付,是前台特种兵的训练基地;
组织中台:为项目提供投资管理、风险管理、资源调度等,是战场的指挥部,战争的大脑,指挥前线,调度后方。
字典中台:为项目提供国际、国家、业界等标准规范字典并保持及时更新。
阅读全文
摘要:Kafka 中文文档 - ApacheCN https://kafka.apachecn.org/intro.html
Apache Kafka® 是 一个分布式流处理平台. 这到底意味着什么呢?
我们知道流处理平台有以下三种特性:
可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。
可以储存流式的记录,并且有较好的容错性。
可以在流式记录产生时就进行处理。
阅读全文
摘要:Redis主从复制、哨兵、Cluster三种模式
Redis作为缓存的高效中间件,在我们日常的开发中被频繁的使用,今天就来说一说Redis的四种模式,分别是「单机版、主从复制、哨兵、以及集群模式」。
可能,在一般公司的程序员使用单机版基本都能解决问题,在Redis的官网给出的数据是10W QPS,这对于应付一般的公司绰绰有余了,再不行就来个主从模式,实现读写分离,性能又大大提高。
程序员仅限于单机版和主从模式的crud是不行的,至少也要了解「哨兵」和「集群模式」的原理
单机
单机版的Redis就比较简单了,基本90%的程序员都是用过,官网推荐操作Redis的第三方依赖库是Jedis,在SpringBoot项目中,引入下面依赖就可以直接使用了:
阅读全文
摘要:用GitLab搭建自己的私有GitHub
现在git是开发人员的必备技能之一,github的代码仓库管理系统目前是最好的,下面搭建私有github系统的过程。
下载gitlab:
官网地址:https://about.gitlab.com/install/
Download a GitLab Omnibus package (recommended installation)
阅读全文
摘要:mysql数据库表上百万记录优化思路杂谈
我的mysql数据库表上百万记录,插入数据的时候超慢,插入一笔都差不多将近1秒钟了
有没有做索引?数据量大了一般要做分区分表处理的,实时性要求高的一般要做缓存或者数据总线分层处理的
你用的是不是ssd硬盘?ssd硬盘比机械硬盘快很多倍。
数据库光靠调参数,以经提升到最快0.007秒多一笔插入的速度了
看来还是大数据技术比较重要
调整了那些参数提升这么多?
调了很多参数,mysql、springboot、shardingsphere、druid
可能需要评估一下如何加入Hadoop来进行存储及处理区块链的数据
阅读全文
摘要:程序员应该了解的常见软件开发定律
软件开发领域最著名和最常见的定律:
墨菲定律(Murphy's Law)
可能是最著名的定律之一,主要是因为它不仅适用于软件开发。
如果事情可能出错,它就会出错。
阅读全文
摘要:对各种开发语言优劣的讨论,入门难度,IDE,大型网站并发性,java,golang,php,python,api接口,前后端分离
现在很多有高并发要求的 java c++的接口改成golang的
有个朋友公司就是把java写的接口改成golang的,听他说的是效率提高了上百倍,节省了大量服务器
java入门比较难,要达到熟练独立开发一个网站出来需要比较长的学习时间
php Python入门很容易,要做大型网站深入也很难
php Python零基础一星期就可以入门了
java你搞一个月门都没有找到
php做个小网站还是比较快的
Python做个小工具还是很好的,一个文件就可以直接运行起来了
金融相关的用java比较多,比较成熟了,招人也容易
现在流行前后端分离了
golang java 做API接口更有优势的
Python做科学计算,自动化,人工智能的更有优势
springboot springcloud 做API还是很不错的,之前的tomcat 那些容器搞得太复杂了
阅读全文
摘要:不要在 MySQL 中使用“utf8”,请使用“utf8mb4”
问题的症结在于,MySQL的“utf8”实际上不是真正的UTF-8。
“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。
MySQL一直没有修复这个bug,他们在2010年发布了一个叫作“utf8mb4”的字符集,绕过了这个问题。
当然,他们并没有对新的字符集广而告之(可能是因为这个bug让他们觉得很尴尬),以致于现在网络上仍然在建议开发者使用“utf8”,但这些建议都是错误的。
在这个不合法的字符集发布了之后,MySQL就无法修复它,因为这样需要要求所有用户重新构建他们的数据库。最终,MySQL在2010年重新发布了“utf8mb4”来支持真正的UTF-8。
阅读全文
摘要:nodejs高并发大流量的设计实现,控制并发的三种方法
eventproxy、async.mapLimit、async.queue控制并发
Node.js是建立在Google V8 JavaScript引擎之上的网络服务器框架,允许开发者能够用客户端使用的语言JavaScript在服务器端编码。
node.js优缺点:
优点: 高并发,io密集型处理, 可以作为单页面应用,便于爬虫抓取。
缺点:不适合cpu计算密集型, 对关系数据库支持不好
阅读全文
摘要:区块链公链分片技术(sharding)方案,配思维导图 分片技术(sharding)方案 以太坊分片思路 其基本思想是,将网络中的节点分成不同的碎片,各分片可以并行处理不同交易,这样可以并行处理相互之间未建立连接的交易,以提高网络并发量。分片方案的特点是,随着节点数目的增加,网络吞吐量也随之增加。
阅读全文
摘要:Spring SpringBoot和SpringCloud的关系
Spring Cloud 是完全基于 Spring Boot 而开发,Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。
使用Spring Boot Actuator解决了单个Spring Boot的监控问题,使用Spring Boot Admin解决了整个集群监控的问题。
Spring Boot + Docker + Jenkins 会将 Spring Boot 项目的部署做得更简单化、智能化。
springboot做微服务,集群的话用spring cloud + Spring Boot Admin监控
阅读全文
摘要:ESB(Enterprise Service Bus)企业服务总线介绍
ESB全称为Enterprise Service Bus,即企业服务总线。
它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
在探讨信息系统的SOA架构概念时,一个非常重要的概念是:企业服务总线(ESB)。可以说,企业服务总线也是SOA的核心构成部分。要真正实现应用架构完善的SOA结构,简化SOA构件间的关系,就一定要建设好信息系统的企业级服务总线。
阅读全文
摘要:B轮公司技术问题列表
1、异构系统的接口对接
2、服务接口的监控,状态的追踪
3、外网数据安全
4、分布式事务的处理
5、数据库优化策略
。。。。。。
阅读全文
摘要:Google、亚马逊、微软 、阿里巴巴开源软件一览
大公司为什么要发布开源项目?一是开源能够帮助他人更快地开发软件,促进世界创新,主要是社会价值层面的考虑。二是开源能够倒逼工程师写出更好的代码。三是开源能够更有效利用社区的力量,帮助企业一起解决难题。开源,让世界更美好。
Google,亚马逊,微软,和阿里巴巴都是体量最大的几个互联网公司,也都是作为云厂商的几个大玩家。 在这几家技术公司的合力推动之下,云计算的时代真正来到了我们身边。优秀的技术公司不会缺少自己的技术思考,这些思考有些深藏在云端,我们难以窥见,但不少也会凝结成开源软件这种最能体现互联网技术创新的人类文明成果,推动整个行业的进步。
下面就让我们一起观察这几家公司的重点开源项目,来尝试一探行业未来的风向。如果下文列出的开源项目代码仓库托管在Github平台,本文还会列出该项目的Github Star数,这是评判一个开源项目受关注程度的最好指标。
阅读全文
摘要:数据在千万级别上进行全文检索有哪些技术?强大的大数据全文索引解决方案-ClouderaSearch
1.lucene (solr, elasticsearch 都是基于它)
2.sphinx
3.elasticsearch 简单易用。天生分布式。
4.HBasene(注意HBase后面加了ne就是 HBase+lucene)。
solr的请求基本都封装为了http,如果是http服务效率不好呢绕过它,直接透过lucene的API进行查询。
但是solr云的方式部署进行了负载均衡,效率不会太差。
应用查询条件最多20个左右,10个solr节点,每个节点的数据1亿左右。
但是索引不是写在本地磁盘,是写在hdfs上的。
阅读全文
摘要:XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化
我们现在用的就是典型的XP+devOps模式,已经放弃scrum了
现在还很多公司弄docker
docker非常复杂,当然如果只是用别人的只用记一个docker命令就行了
docker虚拟化消耗额外的系统资源较少 传统虚拟化会占用一点系统资源。通常日志是写在挂载进去的盘 或者直接通过其它协议扔给日志中心服务器
传统虚拟化 启动 销毁 部署 时间都较长
docker部署这些就很短 把一个应用(nginx php node) 等等当成一个服务来用
devOps模式 听朋友说他公司里面执行起来不容易
要各部门配合得很好才行
主要是人的问题, devOps对核心程序员要求极高,一般都得是全栈程序员,而且基本上研发团队都必须是
一个能够做devOps的团队,核心程序员必须是后台运维高手,能够自己编写虚拟机脚本,熟悉vagrant,docker ,snappy这些,会写自动化脚本
一般的公司做不了的,你哪里能招到这么多全栈的
阅读全文