porter

Kubernetes 在本来生活网的落地实践

寵の児 提交于 2020-04-28 10:20:08
本来生活网(benlai.com)是一家生鲜电商平台,提供蔬菜、水果、海鲜等优质生鲜果蔬食材食品网购服务。当今容器技术被广泛关注,本来生活网在经历了一年的技术革命后,基本完成了容器化所需的基础设施建设。本文介绍本来生活网在 Kubernetes 落地过程中的实践和经验。 容器化背景 本来生活网是一家生鲜电商平台,公司很早就停止了烧钱模式,开始追求盈利。既然要把利润最大化,那就要开源节流,作为技术可以在省钱的方面想想办法。我们的生产环境是由 IDC 机房的 100 多台物理机所组成,占用率高达 95%,闲置资源比较多,于是我们考虑借助 Kubernetes 来重构我们的基础设施,提高我们资源的利用率。 容器化项目团队最初加上我就只有三个人,同时我们还有各自的工作任务要做,留给容器化的时间较少,因此我们要考虑如何快速的搭建容器平台,避免走全部自研这条路,这对我们来说是个巨大的挑战。在经历了一年的容器化之旅后,分享下我们这一年所踩过的坑和获得的经验。 面临的问题 在搭建 Kubernetes 集群前,有很多问题摆在我们面前: 人手不足,时间也不充裕,不能有太多自研的需求 我们目前的发布是由测试人员完成的,不可能要求他们去写一个 yaml 或执行 kubectl 做发布,这个学习成本太高也容易出错,因此我们必须构建一个用户体验良好的可视化平台给发布人员使用 我们有大量的 .NET 项目,而

PHP之session与cookie

允我心安 提交于 2020-03-12 10:44:45
cookie: 1、描述:cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制,PHP 透明地支持 HTTP cookie,常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,能够创建并取回 cookie 的值。 2、创建:setcookie() setcookie(name, value, expire, path, domain); setcookie("user", "Alex Porter", time()+3600); 3、 取值:$_COOKIE 变量用于取回 cookie 的值 如:$_COOKIE["user"] 4、删除:当删除 cookie 时,您应当使过期日期变更为过去的时间点 如:setcookie("user", "", time()-3600); 如果您的应用程序需要与不支持 cookie 的浏览器打交道,那么您不得不使用其他的办法在您的应用程序中的页面之间传递信息。一种方式是通过表单传递数据 session: 1、描述:session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息于服务器上,并且对于应用程序中的所有页面都是可用的。 2

微服务架构设计基础之立方体模型

心已入冬 提交于 2020-03-02 11:33:18
背景 对于现在的微服务架构的应用来说,对大量并发的及时响应是一项制胜能力。据用户行为分析平台统计,随行付的某一款APP产品每日请求就达到上千万次用户请求、加解密服务3000万次/日等等。这些微服务每时每刻在处理如此高强度的请求,对数据层的应对能力要求极高。如果我们把对速度的需求放在复杂的分布式数据架构背景下,是很难想象如何让应用应对如此巨大的数据访问量的。但很幸运,我们有方法做到。即 立方体模型 。 立方体模型 可扩展的分布式系统架构设计有一个朴素的理念,就是: 通过加机器就可以解决容量和可用性的问题 。 对于一个迅速增长的应用而言,容量和性能是首当其冲要面临的问题。但随着时间的向前推移、应用规模不断的快速增长,除了面对性能与容量的问题外,还需要解决功能与模块数量上增长带来的系统复杂性问题、业务变化带来的差异化服务问题等。而多数情况下应用设计之初出于诸多因素的考量,并没有充分考虑或在设计之初就将此类问题提上日程,导致系统的重构成为常态,从而影响业务交付能力。对此,「架构即未来」一书中提出了更加系统的可扩展模型,可扩展模型是一个富有启发性的方法,描述了微服务三个维度的扩展方法,可以通过它来了解微服务架构的扩展维度。 X轴:横向扩展模式,关注水平的数据和服务克隆 Y轴:功能分解模式,关注应用中的职责的划分 Z轴:数据分区模式,关注服务和数据的优先级划分 X轴扩展

ionic安装sqlite插件报错unexpected end of file

安稳与你 提交于 2020-02-26 19:55:30
解决办法: 先删除下载失败的依赖的缓存,我是windows系统,用 npm cache verify 命令。 然后下面是一些可选的方法,一般一种方法就好了 1.然后可以重新设置一下镜像,换成国内的 npm install -g cnpm --registry=https://registry.npm.taobao.org 2.管理员权限执行cmd安装 3. 执行 npm install --no-package-lock 命令 另外ionic安装sqlite依赖的官方命令如下 1.ionic cordova plugin add uk.co.workingedge.cordova.plugin.sqliteporter 2.npm install @ionic-native/sqlite-porter 来源: oschina 链接: https://my.oschina.net/u/4461629/blog/3169366

微服务之数据同步Porter

萝らか妹 提交于 2019-12-11 21:26:58
Porter是一款数据同步中间件,主要用于解决同构/异构数据库之间的表级别数据同步问题。 背景 在微服务架构模式下深刻的影响了应用和数据库之间的关系,不像传统多个服务共享一个数据库,微服务架构下每个服务都要有自己的数据库。如果你想获得微服务带来的好处,每个服务独有一个数据库是必须的,因为微服务强调的就是松耦合。我们希望数据库就和服务一样,要有充分的独立性、可以和服务一起部署、一起扩展、一起重构。同时,还需要兼顾数据中心的数据聚合、DBA的多种数据库备份、报表中心的业务报表等等矛盾问题。因此便产生了「Porter」项目。 微服务改造过程中,无法避免的一个坎,那就是垂直拆库,根据不同的子服务,把过去的「一库多服」拆分成「一库一服」。 一库多服还是一库一服? 不管是否是微服务架构,应用的各个模块之间都需要频繁的通信、协作、共享数据,实现系统的整体价值。区别点在于单体应用是通过本地方法调用来完成;在微服务中是通过远程API调用完成。 而共享数据最贱的方式就是采用共享数据库模式,也就是单体应用中最常用的方式,一般只有一个数据库,如图一库多服和一库一服的方式: 一库多服的架构模式通常会被认为是微服务架构下的反范式,它的问题在于: 稳定性:单点故障,一个数据库挂掉,整批服务全部停止。服务独立性被扼杀? 耦合性:数据在一起,会给贪图方便的开发或者DBA工程师编写很多数据间高度依赖的程序或者工具;