打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com
设置全局使用镜像:
composer config -g repo.packagist composer https://packagist.laravel-china.org
取消镜像:
composer config -g --unset repos.packagist
composer config -g repo.packagist composer https://mirrors.aliyun.com/composercomposer config -g repo.packagist composer https://php.cnpkg.orgcomposer config -g repo.packagist composer https://packagist.phpcomposer.comcomposer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer
COMPOSER_MEMORY_LIMIT=-1composer require "laravel/horizon:~3.1"
或者
php -d memory_li
首先SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。
SOA(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。
微服务架构:其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想
系统集成:站在系统的角度,解决企业系统间的通信问 题,把原先散乱、无规划的系统间的网状结构,梳理成 规整、可治理的系统间星形结构,这一步往往需要引入 一些产品,比如 ESB、以及技术规范、服务管理规范; 这一步解决的核心问题是【有序】
系统的服务化:站在功能的角度,把业务逻辑抽象成 可复用、可组装的服务,通过服务的编排实现业务的 快速再生,目的:把原先固有的业务功能转变为通用 的业务服务,实现业务逻辑的快速复用;这一步解决
本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。
为了防止不提供原网址的转载,特在这里加上原文链接:
https://www.cnblogs.com/skabyy/p/11396571.html
要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。
几年前,小明和小皮一起创业做网上超市。小明负责程序开发,小皮负责其他事宜。当时互联网还不发达,网上超市还是蓝海。只要功能实现了就能随便赚钱。所以他们的需求很简单,只需要一个网站挂在公网,用户能够在这个网站上浏览商品、购买商品;另外还需一个管理后台,可以管理商品、用户、以及订单数据。
我们整理一下功能清单:
小明挥一挥手,找了家云服务部署上去,网站就上线了。上线后好评如潮,深受各类肥宅喜爱。小明小皮美滋滋地开始躺着收钱。
好景不长,没过几天,各类网上超市紧跟着拔地而起,对小明小皮造成了强烈的冲击。
在竞争的压力下,小明小皮决定开展一些营销手段:
这些活动都需要程序开发的支持。小明拉了同学小红加入团队。小红负责数据分析以及移动端相关开发。小明负责促销活动相关功能的开发。
因为开发任务比较紧迫,小明小红没有好好规划整个系统的架构,随便拍了拍脑袋,决定把促销管理和数据分析放在管理后台里,微信和移动端
在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。
微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高。到后面引入了SOA服务化,但是,由于 SOA 早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,比如:J2EE。这导致很多企业的遗留系统很难对接,切换时间太长,成本太高,新系统稳定性的收敛也需要一些时间。最终 SOA 看起来很美,但却成为了企业级奢侈品,中小公司都望而生畏。
单体架构在规模比较小的情况下工作情况良好,但是随着系统规模的扩大,它暴露出来的问题也越来越多,主要有以下几点:
复杂性逐渐变高
比如有的项目有几十万行代码,各个模块之间区别比较模糊,逻辑比较混乱,代码越多复杂性越高,越难解决遇到的问题。
技术债务逐渐上升
公司的人员流动是再正常不过的事情,有的员工在离职之前,疏于代码质量的自我管束,导致留下来很多坑,由于单体项目代码量庞大的惊人,留下的坑很难被发觉,这就给新来的员工带来很大的烦恼,人员流动越大所留下的坑越多,也就是所谓的技术债务越来越多。
部署速度逐渐变慢
这个就很
问题描述:
创建一个内部网络(docker network create ims_network),在这个内部网络跑了两个容器(一个mysql容器,一个python容器),从python容器中向mysql容器中写数据(insert,update)很慢,select很快。
时间:10个insert用了2秒。
问题解决:
[mysqld]skip-name-resolveinnodb_flush_log_at_trx_commit=0sync_binlog=0
方法解析:
————————————————
版权声明:本文为CSDN博主「纯真-Cloud」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chunzhenzyd/article/details/82887269
docker psdocker stop $(docker ps -a -q)docker rm $(docker ps -a -q)docker rmi $(docker images -q)docker-machine ssh defaultdocker search httpddocker imagesdocker-php-ext-install pdo pdo_mysqldocker run -d -p 5000:5000 training/webapp python app.py查看日志:docker logs --tail 3000 e0864b9d33ef
查找IP
docker-machine ip defaultdocker inspect 容器名称
docker run -itd -p 9001:9001 -v /PHP:/www --name php74 /bin/bash php:7.4-fpm
docker run -p 3307:3306 --name mysql -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:5.7
docker run -p 6379:6379 --name redis -v /Docker/redis/redis.conf:/etc/redis/redis.conf -v /Docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yesdocker exec -it redis /bin/bash
docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo:3.2
docker run
pull php 镜像
docker pull php:7.3-alpine3.8
创建容器
docker run -it --name test php:7.3-alpine3.8 sh
# 安装依赖的第三方包echo http://mirrors.ustc.edu.cn/alpine/v3.7/main > /etc/apk/repositories && \echo http://mirrors.ustc.edu.cn/alpine/v3.7/community >> /etc/apk/repositoriesapk --no-cache add autoconf gcc g++ make openssl openssl-dev#下载swoolepecl install swoole-4.3.1#开启扩展docker-php-ext-enable swoole#查看扩展php -m#将目前环境打包成新镜像docker commit test swoole:4.3.1
docker run -it --name swoole \-p 80:80 \-v /home/my/lujing:/pro \swoole:4.3.1 sh
"autoload": {"psr-4": {"App\\": "app/"}}
执行composer dump-autoload映射app目录
$http = new Swoole\Http\Server("0.0.0.0", 80);$http->on('request', function ($request,Swoole\Http\Response $response) {$response->end("<h1>hello</h1>");});$http->start();
RabbitMQ是一个消息代理器:它接受和转发消息。你可以把它当作一个邮局:当你把邮件放在信箱里时,你可以肯定邮差先生最终会把邮件送到你的收件人那里。在这个比喻中,RabbitMQ就是这里的邮箱,邮局和邮差。
RabbitMQ和邮局之间的主要区别是,它不处理纸张,而是接受、存储和转发二进制数据‒消息。
RabbitMQ,和一般的消息传递,使用专业术语。
生产者的工作就是发送消息。发送消息的程序是生产者:
队列类比一个邮箱,存在于RabbitMQ, 然而信息流通过RabbitMQ和您的应用程序,他们只能存储在一个队列。队列只受主机内存和磁盘限制的约束,它本质上是一个很大的消息缓冲区。会有许多生产者可以发送到一个队列的消息,许多消费者可以尝试从一个队列接收数据。这就是我们如何表示队列的方式:
消费者和生产者有着相似的意义. 消费者无非就是等待消息然后处理的程序:
请注意,生产者、消费者和代理不必同一主机上;事实上,在大多数应用程序中它们没有这样做。
(使用PHP amqplib客户端)
在本教程的这一部分中,我们将用PHP编写两个程序;一个生产者发送一条消息,一个用户接收消息并将它们打印出来。我们会PHP amqplib API的忽略一些细节,集中在这个非常简单的事情刚刚开始。这是一个“Hello World”的消息传递。
在下图中,“p”是我们的生产商,“C”是我们的消费者。在中间的框是一个队列的消息缓冲区,RabbitMQ保持代表的消费。
RabbitMQ有很多协议。本教程介绍AMQP 0-9-1,这是一个开放的、通用的协议消息。有许多不同的语言RabbitMQ一批客户。我们将在本教程中使用PHP amqplib,composer解决依赖管理。
添加composer.json:
{"require": {"php-amqplib/php-amqplib": ">=2.6.1"}}
composer install# 或者 直接运行包引入composer require php-amqpli
本教程适合 Mac 及 linux 用户的二进制版安装。
Mac, Linux 用户的源码版安装,参见这里。
Windows 用户的二进制版安装,参见这里。
Windows 用户的源码版安装,参见这里。
安装步骤:
下载 leanote 二进制版。
安装 mongodb。
导入初始数据。
配置 leanote。
运行 leanote。
由此处下载 leanote 最新二进制版。
假设将文件下载到 /home/user1 目录下, 解压文件从而在 /home/user1 目录下生成 leanote目录:
$> cd /home/user1$> tar -xzvf leanote-darwin-amd64.v2.0.bin.tar.gz
到 mongodb 官网 下载相应系统的最新版安装包,或者从以下链接下载旧版本:
64位 linux mongodb 3.0.1 下载链接: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.1.tgz
下载到 /home/user1下, 直接解压即可:
$> tar -xzvf mongodb-linux-x86_64-3.0.1.tgz/$> mv mongodb-linux-x86_64-3.0.6/ /home/mongodb # 将解压包拷贝到指定目录$> mkdir -p /data/db # 创建数据库目录
为了快速使用mongodb命令, 可以配置环境变量。编辑 ~/.profile或/etc/profile 文件, 将mongodb/bin路径加入即可:
$> sudo vim /etc/profile
此处实例使用了vim文本编辑器,你可以使用自己熟悉的编辑器。
在/etc/profile中添加以下行,注意把用户名(u
1.查找
db.system.users.find().pretty()show usersdb.table.find()db.table.find().pretty()db.col.getIndexes()db.col.totalIndexSize()db.col.dropIndexes()db.col.dropIndex("索引名称")
// LIKE模糊查询userName包含A字母的数据(%A%)// SQL:SELECT * FROM UserInfo WHERE userName LIKE "%A%"db.UserInfo.find({userName :/A/})// LIKE模糊查询userName以字母A开头的数据(A%)。// SQL:SELECT * FROM UserInfo WHERE userName LIKE "A%"db.UserInfo.find({userName :/^A/})//查询商品名称长度大于25个字符的商品db.item.find({item_name:{$exists:true},$where:"(this.item_name.length > 25)"}).limit(5)db.item.find({"item_name": {"$exists": true, "$regex": /^.{25,}$/}}).limit(5)//查询商品名称长度小于5个字符的商品db.item.find({$where:"this.item_name.length < 5"}).limit(5)db.item.find({"item_name": {"$regex": /^.{0,5}$/}}).limit(5)
2.创建